| @@ -83,8 +83,8 @@ _12 d'oTe | |||
| _13 tr'eTe | |||
| _14 kat'orTe | |||
| _15 k'inTe | |||
| _20 B'inte | |||
| _2X B,int | |||
| _20 b'inte | |||
| _2X b,int | |||
| _3X tr'enta | |||
| _4X kwar'anta | |||
| _5X Tinkw'anta | |||
| @@ -112,40 +112,40 @@ _dpt kon | |||
| // ordinal numbers | |||
| _#º o | |||
| _#ª a | |||
| _#º %'eno | |||
| _#ª %'ena | |||
| _x#º %o // for 1º 2º 3º | |||
| _x#ª %a | |||
| º orDin'al||maskul'in | |||
| ª orDin'al||femen'in | |||
| _1ox prim'Er | |||
| _2ox seQ'und | |||
| _3ox tErT'Er | |||
| _1o un'en | |||
| _2o dos'en | |||
| _3o tres'en | |||
| _4o kwatr'en | |||
| _5o Tink'en | |||
| _6o seIs'en | |||
| _7o sEt'en | |||
| _8o gwit'en | |||
| _9o nU'en | |||
| _11o onT'en | |||
| _12o DoT'en | |||
| _13o tReT'en | |||
| _14o katorT'en | |||
| _15o kinT'en | |||
| _16o sET'en | |||
| _10o DET'en | |||
| _20o Bint'en | |||
| _30o trent'en | |||
| _40o kwarant'en | |||
| _50o Tinkwant'en | |||
| _60o siSant'en | |||
| _70o sEtant'en | |||
| _80o gwitant'en | |||
| _90o noBant'en | |||
| _4o kwatr | |||
| _5o Tink | |||
| _7o sEt | |||
| _8o gwit | |||
| _9o nU | |||
| _11o onT | |||
| _12o doT | |||
| _13o tReT | |||
| _14o katorT | |||
| _15o kinT | |||
| _16o sET | |||
| _10o dET | |||
| _20o bint | |||
| _30o trent | |||
| _40o kwarant | |||
| _50o Tinkwant | |||
| _60o siSant | |||
| _70o sEtant | |||
| _80o gwitant | |||
| _90o noBant | |||
| _1Xo DeTi | |||
| _2Xo Binti | |||
| _1Xo deTi | |||
| _2Xo binti | |||
| _3Xo trentaI | |||
| _4Xo kwarantaI | |||
| _5Xo TinkwantaI | |||
| @@ -153,21 +153,16 @@ _6Xo siSantaI | |||
| _7Xo sEtantaI | |||
| _8Xo gwitantaI | |||
| _9Xo noBantaI | |||
| _1Co TEnt'en | |||
| _2Co dosTEnt'en | |||
| _3Co tresTEnt'en | |||
| _4Co kw,atroTEnt'en | |||
| _5Co T,inkoTEnt'en | |||
| _6Co seIsTEnt'en | |||
| _7Co sjEtTEnt'en | |||
| _8Co gw,eItoTEnt'en | |||
| _9Co nweUTEnt'en | |||
| _0Co Tent | |||
| _1Co TEnt | |||
| _2Co dosTEnt | |||
| _3Co tresTEnt | |||
| _6Co seIsTEnt | |||
| _7Co sjEtTEnt | |||
| _8Co gw,eItoTEnt | |||
| _9Co nweUTEnt | |||
| _0M1o mil'en | |||
| _0M2o mil^on'en | |||
| _1M2o mil^on'en | |||
| _0M4o bil^on'en | |||
| _1M4o bil^on'en | |||
| _0M1o mil | |||
| // characters | |||
| @@ -208,8 +203,13 @@ lo $u | |||
| la $u | |||
| los $u | |||
| las $u | |||
| ro $u | |||
| ra $u | |||
| ros $u | |||
| ras $u | |||
| ne $u | |||
| nes $u | |||
| me $u | |||
| te $u | |||
| se $u | |||
| @@ -236,13 +236,10 @@ tu $u | |||
| sin $u | |||
| su $u | |||
| ye $u | |||
| ro $u | |||
| ra $u | |||
| ros $u | |||
| ras $u | |||
| el $u | |||
| es $u | |||
| els $u | |||
| ers $u | |||
| mis $u | |||
| tus $u | |||
| sus $u | |||
| @@ -250,6 +247,7 @@ bell $u | |||
| bel $u | |||
| bella $u | |||
| bells $u | |||
| bels $u | |||
| bellas $u | |||
| bellos $u | |||
| que $u | |||
| @@ -261,25 +259,15 @@ quando $u | |||
| on $u | |||
| aon $u | |||
| porque $u | |||
| dende $u | |||
| entre $u | |||
| contra $u | |||
| enta $u | |||
| sinde $u | |||
| per $u | |||
| pus $u | |||
| dica $u | |||
| sino $u | |||
| ni $u | |||
| pero $u | |||
| ibi $u | |||
| bi $u | |||
| i $u+ | |||
| ie $u | |||
| hu $u | |||
| sant $u | |||
| donya $u | |||
| don $u | |||
| se'n sen $u | |||
| //abbreviations | |||
| @@ -3,179 +3,163 @@ | |||
| // Numbers | |||
| devanagari numbers are changed to latin characters before translation | |||
| _0 S'u:n.nV'o: | |||
| _1 a'k | |||
| _2 d:UI | |||
| _3 t'i:n | |||
| _4 c'a:@'r | |||
| _5 ,pa~c | |||
| _6 c#'O:j | |||
| _7 S'a:t | |||
| _8 'a:t.# | |||
| _9 n'O:j | |||
| _10 d'O:S | |||
| _11 a'g'a:rO: | |||
| _12 b'a:rO: | |||
| _13 t'a:rO: | |||
| _14 c#:O:d'dO: | |||
| _15 p'O:n'e:rO: | |||
| _16 S'o:lO: | |||
| _17 SO:t'e:rO: | |||
| _18 a:t#'e:rO: | |||
| _19 U'n'IS | |||
| _20 kU:'ri | |||
| _21 e:kU'S | |||
| _22 b'a:IS | |||
| _23 t'e:IS | |||
| _24 c'O:b'bIS | |||
| _25 pa~O:c'IS | |||
| _26 c#'a:'bb'IS | |||
| _27 Sa:ta:S | |||
| _28 at#'a:S | |||
| _29 Unt'rIs | |||
| _30 t'i:rIS | |||
| _31 e:k't:rIS | |||
| _32 bat:'rIS | |||
| _33 tE't'rIS | |||
| _34 ca~o:u:t'rIS | |||
| _35 pa~O:it'rIS | |||
| _36 c#a'trIS | |||
| _37 Sa~it'rIS | |||
| _38 at'tr'IS | |||
| _39 U'nO:cO:l'IS | |||
| _40 co:l'lIS | |||
| _41 e:k'co:l'lIS | |||
| _42 bi'al'lIS | |||
| _43 te:ta:l'lIS | |||
| _44 cu:a:l'lIS | |||
| _45 paI'nta:l'lIS | |||
| _46 c#e:co:l'lIS | |||
| _47 Sat'co:l'lIs | |||
| _48 at'co:l'lIS | |||
| _49 Uno:pan'ca:S | |||
| _50 p@n'ca:s | |||
| _51 e:ka:n'no: | |||
| _52 ba:h@n'no: | |||
| _53 t'Ip'pan'no: | |||
| _54 cu:wan'no: | |||
| _55 po:n'ca:n'no: | |||
| _56 c#h@p:'an'no: | |||
| _57 Sa:ta:n'no: | |||
| _58 at#'a:n'no: | |||
| _59 Uno:s'at# | |||
| _60 s'a:t.# | |||
| _61 e:k'so:t'tI | |||
| _62 ba:so:t'tI | |||
| _63 te:so:t'tI | |||
| _64 ca~o:u:so:t'tI | |||
| _65 pa~I'so:t'tI | |||
| _66 c#e:so:t'tI | |||
| _67 Sat'so:t'tI | |||
| _68 atso:t'ti | |||
| _69 ,Uno:Sat'to:r | |||
| _70 So:t'to:r | |||
| _71 e:kat'to:r | |||
| _72 ba:hat'to:r | |||
| _73 tIat'to:r | |||
| _74 cu:at'to:r | |||
| _75 pa~c#at'to:r | |||
| _76 c#I'at:to:r | |||
| _77 Sa:t@'t:o:r | |||
| _78 atat'to:r | |||
| _79 ,Uno:a:Si: | |||
| _80 a:Si | |||
| _81 e:ka:Si: | |||
| _82 bI'ra:Si: | |||
| _83 tIra:Si: | |||
| _84 cu:ra:Si: | |||
| _85 pa~ca:Si: | |||
| _86 c#Ia:Si: | |||
| _87 Sa:ta:Si: | |||
| _88 O:sto:a:Si: | |||
| _89 Uno:no:b'bo:I | |||
| _90 no:b:bo:I | |||
| _91 e:ka:no:b'bo:I | |||
| _92 bIra:no:b'bo:I | |||
| _93 tIr'a:no:b'bo:I | |||
| _94 cu:r'a:no:b'bo:I | |||
| _95 pa~ca:no:b'bo:I | |||
| _96 c#Ia:no:b'bo:I | |||
| _97 S@ta:no:b'bo:I | |||
| _98 ata:no:b'bo:I | |||
| _99 nIra:no:b'bo:I | |||
| _0C SO: | |||
| _0M1 h@z'a:r | |||
| _0M2 l'a:k# | |||
| _0M3 ko:tI | |||
| _0M4 o:r'bu:d | |||
| _dpt d@so:mIk | |||
| _0 S'unjO | |||
| _1 '&k | |||
| _2 duj | |||
| _3 t'in | |||
| _4 tS'ar | |||
| _5 p'a~tS | |||
| _6 tS#'Oj | |||
| _7 S'at | |||
| _8 'at.# | |||
| _9 n'Oj | |||
| _10 d'OS | |||
| _11 '&garo | |||
| _12 b'aro | |||
| _13 t'ero | |||
| _14 tS'owddo | |||
| _15 p'Onero | |||
| _16 S'olo | |||
| _17 S'Otero | |||
| _18 'at.#aro | |||
| _19 'uniS | |||
| _20 b'iS // ?? | |||
| _21 'ekuS | |||
| _22 b'ajS | |||
| _23 t'ejS | |||
| _24 tS'ObbiS | |||
| _25 p'O~tSiS | |||
| _26 tS#'ObbiS | |||
| _27 S'ataS | |||
| _28 'at.#aS | |||
| _29 'untriS | |||
| _30 t'iriS | |||
| _31 'ektriS | |||
| _32 b'OtriS | |||
| _33 t'etriS | |||
| _34 tSowtriS | |||
| _35 pO~jtriS | |||
| _36 tS#'OtriS | |||
| _37 S'a~itriS | |||
| _38 'at.riS | |||
| _39 'unOtSOlliS | |||
| _40 tS'OlliS | |||
| _41 'ektSOlliS | |||
| _42 b'ialliS | |||
| _43 t'etalliS | |||
| _44 tS'oalliS | |||
| _45 p'O~jtalliS | |||
| _46 tS'etSOlliS | |||
| _47 S'atSOllis | |||
| _48 'atSOlliS | |||
| _49 'unOpO~tSaS | |||
| // numbers above 50 need to be corrected | |||
| _50 p'O~tSaS | |||
| _5X p'O~tSaS | |||
| _59 'unOsat. | |||
| _60 s'at. | |||
| _6X s'at. | |||
| _69 'unOS'OttOr | |||
| _70 S'OttOr | |||
| _7X S'OttOr | |||
| _79 'unOaSi | |||
| _80 'aSi | |||
| _8X 'aSi | |||
| _89 'unOnObbOj | |||
| _90 n'ObbOj | |||
| _9X n'ObbOj | |||
| _0C S'o | |||
| _0M1 h'ajar | |||
| _0M2 l'ak# | |||
| _0M3 k'ot.i | |||
| _0M4 'Orbud | |||
| _dpt dOsomik | |||
| // Single consonants | |||
| ক k@ | |||
| খ k#@ | |||
| গ g@ | |||
| ঘ g#@ | |||
| ঙ N'g | |||
| চ c@ | |||
| ছ c#@ | |||
| জ J@ | |||
| ঝ J#@ | |||
| ঞ n^@ | |||
| ট t.@ | |||
| ঠ t.#@ | |||
| ড d.@ | |||
| ঢ d.#@ | |||
| ণ n.@ // retroflex n.@ | |||
| ত t@ | |||
| থ t#@ | |||
| দ d@ | |||
| ধ d#@ | |||
| ন n@ | |||
| প p@ | |||
| ফ p#@ | |||
| ব b@ | |||
| ভ b#@ | |||
| ম m@ | |||
| য় O:j | |||
| য J@ | |||
| র r@ | |||
| ড় r-@ | |||
| ঢ় hr@ | |||
| ল l@ | |||
| শ S@ | |||
| ষ s.@ // retroflex [S] | |||
| স s@ | |||
| হ H@ | |||
| ৎ t@ | |||
| // Single consonants | |||
| ক kO | |||
| খ k#O | |||
| গ gO | |||
| ঘ g#O | |||
| ঙ 'uNO | |||
| চ tSO | |||
| ছ tShO // [h] to distinguish from [tS] | |||
| জ JO | |||
| ঝ J#O | |||
| ঞ 'iNO | |||
| ট t.O | |||
| ঠ t.#O | |||
| ড d.O | |||
| ঢ d.#O | |||
| ণ m'odd#ennO | |||
| ত tO | |||
| থ t#O | |||
| দ dO | |||
| ধ d#O | |||
| ন d'ontennO | |||
| প pO | |||
| ফ p#O | |||
| ব bO | |||
| ভ b#O | |||
| ম mO | |||
| য় Oj | |||
| য ontostedZ'O | |||
| র rO | |||
| ঢ় hrO | |||
| ল lO | |||
| শ taleboS:O | |||
| ষ mud#en:oS:O | |||
| স d'onteS:O | |||
| হ hO | |||
| ৎ kh'Ond.otO | |||
| // full vowels | |||
| অ SOro'O | |||
| আ SOro'a | |||
| ই hrOS:o'i | |||
| ঈ dirg#o'i | |||
| উ hrOS:o'u | |||
| ঊ dirg#o'u | |||
| ঋ ri | |||
| এ e | |||
| ঐ oj | |||
| ও o | |||
| ঔ ow | |||
| // combining vowel signs | |||
| ा #X2a: | |||
| ि #X1I | |||
| ी #X2i: | |||
| ূ #X1U | |||
| ू #X2u: | |||
| ृ #X1rI | |||
| ে #X1e: | |||
| ৈ #X2E: | |||
| ো #X1o: | |||
| ৌ #X1O: | |||
| ॐ #X1o~m | |||
| া 'akar | |||
| ি r'oS:ikar | |||
| ী d'irg#ikar | |||
| ূ r'oS:ukar | |||
| ু d'irg#ukar | |||
| ৃ r'ikar | |||
| ে 'ekar | |||
| ৈ 'ojkar | |||
| ো 'okar | |||
| ৌ 'owkar | |||
| // signs | |||
| ্ h'OSonto | |||
| ং 'OnuSSOr | |||
| ঃ b'iSOrgo | |||
| ঁ tS'Ondrobindu | |||
| ় b'indu | |||
| // Punctuation | |||
| । dVn.d.V | |||
| // Pronouns | |||
| আমি $u // main: I | |||
| আমায় $u | |||
| @@ -198,7 +182,7 @@ _dpt d@so:mIk | |||
| তোর $u | |||
| এ $u // he/she/it | |||
| একে $u | |||
| আপনি $u | |||
| এটার $u | |||
| এর $u | |||
| @@ -264,6 +248,9 @@ _dpt d@so:mIk | |||
| // Verbs | |||
| হয় $u | |||
| ছিল $u // chilo: past aux | |||
| ছিলেন $u // chilen | |||
| @@ -274,5 +261,3 @@ _dpt d@so:mIk | |||
| // Exceptions | |||
| ক্রিকেট krIk'Et | |||
| সাইবার s'aIb@r | |||
| @@ -7,9 +7,6 @@ | |||
| // C consonants | |||
| // Y vowel letters and vowel signs | |||
| // conditional rules | |||
| // ?2 use diphthong for "ai" | |||
| // ?3 use diphthong for "au" | |||
| .replace | |||
| @@ -29,288 +26,376 @@ | |||
| .group অ | |||
| অ a | |||
| অ V | |||
| অঁ O~ | |||
| .group আ | |||
| আ a: | |||
| আ a | |||
| আঁ a~ | |||
| .group ই | |||
| ই I | |||
| ই i | |||
| ইঁ i~ | |||
| ইং I'ng | |||
| .group ঈ | |||
| ঈ i: | |||
| ঈ (_ i | |||
| ঈ i | |||
| ঈঁ i~ | |||
| .group উ | |||
| উ U | |||
| উ u | |||
| উঁ u~ | |||
| .group ঊ | |||
| ঊ u: | |||
| ঊং u~ // + anusvara | |||
| ঊঁ u~ // + candrabinbu | |||
| ঊ u | |||
| ঊঁ u~ | |||
| .group ঋ | |||
| ঋ rI | |||
| ঋ ri | |||
| ঋঁ ri~ | |||
| .group এঁ | |||
| এঁ E // candra e | |||
| .group ঌ | |||
| ঌ l- | |||
| .group এ | |||
| এ & | |||
| এঁ &~ | |||
| .group ঐ | |||
| ঐ e | |||
| ঐ oj | |||
| ঐঁ o~j | |||
| .group এ | |||
| এ e: | |||
| এ e | |||
| এঁ e~ | |||
| .group ঐ | |||
| ঐ E: // ?? [aI] [E:] [&:] | |||
| ঐং E~ | |||
| ঐঁ E~ | |||
| ?2 ঐ aI // ?? [aI] [E:] [&:] | |||
| .group ও | |||
| ও o | |||
| ওঁ o~ | |||
| .group ওঁ | |||
| ওঁ O // candra O | |||
| .group ঔ | |||
| ঔ o | |||
| ঔ ow | |||
| ঔঁ o~w | |||
| .group ও | |||
| .group ও //?? | |||
| ও o: | |||
| ওং o~ // +anusvara | |||
| ওঁ o~ // +candrabindu | |||
| .group ঔ | |||
| ঔ O: // ?? [aU] [O:] | |||
| ঔঁ O~ // +candrabindu | |||
| // Vowel Signs | |||
| .group া | |||
| া a: | |||
| া a | |||
| াঁ a~ | |||
| .group ি | |||
| ি I | |||
| ি i | |||
| িঁ i~ | |||
| .group ী | |||
| ী i: | |||
| ী (_ i | |||
| ী i | |||
| ীঁ i~ | |||
| .group ূ | |||
| ূ U | |||
| ূ u | |||
| ূঁ u~ | |||
| .group ু | |||
| ু u: | |||
| ু u | |||
| ুঁ u~ | |||
| .group ৃ | |||
| ৃ rI | |||
| ৃ ri | |||
| ৃঁ ri~ | |||
| .group ে | |||
| ে e: | |||
| ে e | |||
| েঁ e~ | |||
| েউ ew | |||
| .group ৈ | |||
| ৈ E: // ?? [aI] [E:] [&:] | |||
| ৈ oj | |||
| ৈঁ o~j | |||
| .group ো | |||
| ো o: | |||
| ো o | |||
| োঁ o~ | |||
| .group ৌ | |||
| ৌ O: // [O:] or [aU] ?? | |||
| ৌ ow | |||
| ৌঁ o~w | |||
| .group ॐ | |||
| ॐ o~m | |||
| // Consonants | |||
| .group ক | |||
| ক k@ | |||
| ক kV | |||
| ক (B k | |||
| ক্য (्য kja: | |||
| ক্ষ k#'@ | |||
| ক (_ k | |||
| .group খ | |||
| খ k#V | |||
| খ (B k#@ | |||
| খ (B k# | |||
| খ (_ k# | |||
| .group গ | |||
| গ gV | |||
| গ (B g@ | |||
| ঈ)গ (ল g@ | |||
| গ (B g | |||
| গ (_ g | |||
| .group ঘ | |||
| ঘ g#V | |||
| ঘ (B g# | |||
| ঘ (B g# | |||
| ঘ (_ g# | |||
| .group ঙ | |||
| ঙ N'g | |||
| ঙ NV | |||
| ঙ্ (B N | |||
| গা)ঙ (চি Ng@ | |||
| ঙ্ (_ N | |||
| .group চ | |||
| চ cV | |||
| চ (B c | |||
| ্য) চ্য c'j@ | |||
| চ tSV | |||
| চ (B tS | |||
| চ (_ tS | |||
| .group ছ | |||
| ছ c#V | |||
| ছ (B c#@ | |||
| ছ tS#V | |||
| ছ (B tS# | |||
| ছ (_ tS# | |||
| .group জ | |||
| জ J@ | |||
| জ (B J@ | |||
| ্) জ zV | |||
| জ (B J@ | |||
| জ JV | |||
| জ (B J | |||
| জ (_ J | |||
| জ্ব JV | |||
| জ্ব (B J | |||
| জ্ঞ ggo~ | |||
| জ্ঞ (B gg | |||
| .group ঝ | |||
| ঝ J#@ | |||
| ঝ (B J#@ | |||
| ঝ J#V | |||
| ঝ (B J# | |||
| ঝ (_ J# | |||
| .group ঞ | |||
| ঞ n^V | |||
| ঞ্ (B n^ | |||
| ঞ nV | |||
| ঞ্ (B n | |||
| ঞ্ (_ n | |||
| .group ট | |||
| ট t.V | |||
| ট (B t.V | |||
| ট (्য় t.j@ | |||
| ট (B t. | |||
| ট (_ t. | |||
| .group ঠ | |||
| ঠ t.#V | |||
| ঠ (B t.# | |||
| ঠ (_ t.# | |||
| .group ড | |||
| ড d.V | |||
| ড (B d. | |||
| ড (_ d. | |||
| ড় r.V // nukta | |||
| ড় (B r. | |||
| .group ঢ | |||
| ঢ d.#V | |||
| ঢ (B d.# | |||
| ঢ (_ d.# | |||
| .group ণ | |||
| ণ n.V // (temporary) same as dental [n] | |||
| ণ (B n. | |||
| ণ্ম n.m | |||
| ণ nV // should be [n.] if adjacent to t. or d. ? | |||
| ণ (B n | |||
| ণ (_ n | |||
| .group ত | |||
| ত t@ | |||
| ত (B t@ | |||
| ত tV | |||
| ত (B t | |||
| ত (_ t | |||
| .group থ | |||
| থ t#@ | |||
| থ t#V | |||
| থ (B t# | |||
| ক) থ (ন t#@ | |||
| থ (_ t# | |||
| .group দ | |||
| দ d@ | |||
| দ dV | |||
| দ (B d | |||
| ব) দ (ল d@ | |||
| দ (_ d | |||
| .group ধ | |||
| ধ d#@ | |||
| ধ d#V | |||
| ধ (B d# | |||
| সা) ধ (ন d#@ | |||
| .group ন | |||
| ন n@ | |||
| ন (B n@ | |||
| ্) ন (্ n@ | |||
| র্) ন (_ r.n // r +virama অর্ণব | |||
| ধ (_ d# | |||
| .group ন | |||
| ন n: // should this be a long [n] ? | |||
| ন nV | |||
| ন (B n | |||
| ন (_ n | |||
| .group প | |||
| প p@ | |||
| প pV | |||
| প (B p | |||
| প্য (्য p: | |||
| প (_ p | |||
| .group ফ | |||
| ফ p#@ | |||
| ফ (B p#@ | |||
| ফ p#@ | |||
| ফ fV // or [p#] ? | |||
| ফ (B f | |||
| ফ (_ f | |||
| .group ব | |||
| ব b@ | |||
| ব (B b@ | |||
| ব bV | |||
| ব (B b | |||
| ব (_ b | |||
| .group ভ | |||
| ভ b#@ | |||
| ভ (B b#@ | |||
| ভ b#V | |||
| ভ (B b# | |||
| ভ (_ b# | |||
| .group ম | |||
| ম mV | |||
| ्) ম (_ mV | |||
| র্) ম (_ r.m@ // r +virama | |||
| ন্) ম (_ n.m // n +virama | |||
| ম (B m | |||
| ম (_ m | |||
| .group য় | |||
| য় jV | |||
| য় (B jV | |||
| .group য | |||
| য J@ | |||
| য (B J@ | |||
| ्) য (_ ja | |||
| য় jV | |||
| য় (B j | |||
| য় (_ j | |||
| .group য | |||
| য dZV | |||
| য (B dZ | |||
| য (_ dZ | |||
| য় jV // nukta | |||
| য় (B j | |||
| @) য় (_ j | |||
| .group র | |||
| র rV | |||
| র (B r | |||
| ्) র (_ r@ | |||
| র (_ r | |||
| ্) র (_ rV | |||
| .group ল | |||
| ল l | |||
| ল (B l@ | |||
| ক) ল (ম l@ | |||
| ল lV | |||
| ল (B l | |||
| ল (_ l | |||
| .group শ | |||
| শ S@ | |||
| শ (B S@ | |||
| .group শ | |||
| শ SV // or [s] ? | |||
| শ (B S | |||
| শ (_ S | |||
| শ (্ল s | |||
| .group ষ | |||
| ষ s | |||
| ষ (B s //?? | |||
| ষ SV | |||
| ষ (B S | |||
| ষ (_ S | |||
| .group স | |||
| স s@ | |||
| স (B s. | |||
| স SV // or [s] ?? | |||
| স (B S | |||
| স (্থ s | |||
| স (্ত s | |||
| _) স্ব SV // shb | |||
| _) স্ব (B S | |||
| .group হ | |||
| হ H@ | |||
| হ (B H@ | |||
| হ্ব v@ | |||
| .group হ্ব | |||
| B) হ্ব (B v@ | |||
| .group ৎ | |||
| ৎ (B t@t | |||
| হ hV | |||
| হ (B h | |||
| হ (_ h | |||
| .group হ্ব | |||
| হ্ব vV | |||
| হ্ব (B v | |||
| হ্ব (_ v | |||
| .group ৎ | |||
| ৎ t | |||
| // nukta, modifies a consonant | |||
| .group ্যা // ja'falaa | |||
| ্যা a | |||
| .group ড় | |||
| ড় r.V | |||
| ড় (B r. | |||
| .group ঢ় | |||
| ঢ় r.V | |||
| ঢ় (B r. | |||
| .group ँ | |||
| ँ n // candrabindu | |||
| .group ঁ | |||
| ঁ O~ // candrabindu, nasalize the previous vowel | |||
| .group ং | |||
| ং aN'g // anusvara | |||
| ং N // anusvara/onushshor | |||
| .group ः | |||
| ः H // visarga | |||
| .group ঃ // visarga/bishorgo | |||
| ঃ // doubles the following consonant | |||
| ঃ (_ H | |||
| .group ্ // virama | |||
| .group ্ // virama/hoshonto | |||
| ্ | |||
| .group ় | |||
| ় // nukta, modifies a consonant | |||
| @@ -3032,6 +3032,7 @@ Altrincham O:ltrIN@m | |||
| Anglesey aNg@Lsi | |||
| Argyle A@g'aIl | |||
| Argyll A@g;aIl | |||
| Armagh A@m'A: | |||
| Bacup beIk@p | |||
| Berwick bErIk | |||
| Betws bEtUs | |||
| @@ -5252,7 +5252,7 @@ | |||
| te (rrest t2@ | |||
| r) tga (g gI | |||
| @) t (ia S | |||
| s) t (l ? | |||
| s) t (l | |||
| to (morr t@ | |||
| _) to (nn tV | |||
| t (ooth t2 | |||
| @@ -955,7 +955,6 @@ bagate) ll (iz l | |||
| szí) n (ját n | |||
| szí) n (józan n | |||
| nyj n^n^ | |||
| _) nem (- nEm // has $combine attribute in hu_list, combine with the next word | |||
| me) nny (ország n^ | |||
| pihe) nj (_S2 n^ | |||
| @@ -1035,6 +1034,12 @@ szivárvá) ny (játsz n^ | |||
| haszo) n (jár n | |||
| boszorká) ny (jelet n^ | |||
| káno) n (jog n | |||
| legé) ny (jár n^ | |||
| szé) n (jelek n | |||
| 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 | |||
| .group o | |||
| o o | |||
| @@ -1925,6 +1930,7 @@ szögle) t (szob t | |||
| _robo) t (szoftve t | |||
| diva) t (cirk t | |||
| álla) t (cirk t | |||
| szen) t (szob t | |||
| .group tj | |||
| C) tj c | |||
| @@ -2013,6 +2019,8 @@ _tisztele) tj (el tj | |||
| szen) tj (akab tj | |||
| közérze) tj (aví tj | |||
| ké) tj (átszm tj | |||
| szavaza) tj (og tj | |||
| szavaza) tj (eg tj | |||
| .group ts | |||
| ts (_S2 tS //general rule with word end of ts letters | |||
| @@ -2230,6 +2238,9 @@ felira) ts (áv t|S | |||
| _cha) tsz (ob t|s | |||
| robo) ts (of t|S | |||
| merényle) ts (or t|S | |||
| szavaza) ts (o t|S | |||
| szige) ts (ej t|S | |||
| szige) ts (o t|S | |||
| .group tt | |||
| @@ -2507,3 +2518,4 @@ csatlako) z (tok s | |||
| ç tS | |||
| ñ n^ | |||
| ø Y | |||
| @@ -1,2 +1,2 @@ | |||
| name punjabi-test | |||
| name punjabi | |||
| language pa | |||
| @@ -1,4 +1,4 @@ | |||
| name french (Belgium) | |||
| name french-Belgium | |||
| language fr-be | |||
| language fr 8 | |||
| gender male | |||
| @@ -1,3 +1,3 @@ | |||
| language nl | |||
| name dutch-test | |||
| name dutch | |||
| gender male | |||
| @@ -1,4 +1,4 @@ | |||
| name nahuatl - classical | |||
| name nahuatl-classical | |||
| language nci | |||
| gender male | |||
| @@ -3,35 +3,88 @@ | |||
| // Bengali, inherits from Hindi | |||
| //==================================================== | |||
| phoneme @ | |||
| vowel flag1 starttype #@ endtype #@ | |||
| length 65 | |||
| ChangeIfDiminished(@-) | |||
| IF nextPh(H) THEN | |||
| FMT(vowel/@_low) | |||
| phoneme V // inherent vowel, can be [O] or [o] | |||
| vowel flag1 starttype #o endtype #o | |||
| length 200 | |||
| IF thisPh(isFirstVowel) THEN | |||
| IF nextVowel(i) OR nextVowel(u) THEN | |||
| ChangePhoneme(o) | |||
| ENDIF | |||
| IF prevPhW(r) THEN | |||
| ChangePhoneme(o) | |||
| ENDIF | |||
| ENDIF | |||
| FMT(vowel/@_bck) | |||
| ChangePhoneme(O) | |||
| endphoneme | |||
| phoneme V | |||
| vowel flag1 starttype #@ endtype #@ | |||
| length 180 | |||
| CALL hi/V | |||
| phoneme a | |||
| vowel starttype #a endtype #a | |||
| length 225 | |||
| FMT(vowel/aa_9) | |||
| endphoneme | |||
| phoneme a: | |||
| vowel long starttype #a endtype #a | |||
| length 230 | |||
| FMT(vowel/aa_9) | |||
| phoneme i | |||
| vowel starttype #i endtype #i | |||
| length 200 | |||
| FMT(vowel/i_6) | |||
| endphoneme | |||
| phoneme u | |||
| vowel starttype #u endtype #u | |||
| length 200 | |||
| FMT(vowel/u) | |||
| endphoneme | |||
| phoneme e | |||
| vowel starttype #e endtype #e | |||
| length 200 | |||
| FMT(vowel/e) | |||
| endphoneme | |||
| phoneme & | |||
| vowel starttype #a endtype #a | |||
| length 200 | |||
| FMT(vowel/&_2) | |||
| endphoneme | |||
| phoneme o | |||
| vowel starttype #o endtype #o | |||
| length 200 | |||
| IF nextPhW(w) THEN | |||
| length 160 | |||
| ENDIF | |||
| FMT(vowel/o) | |||
| endphoneme | |||
| phoneme O | |||
| vowel starttype #o endtype #o | |||
| length 200 | |||
| FMT(vowel/oo_5) | |||
| endphoneme | |||
| phoneme tS | |||
| import_phoneme base/tS | |||
| endphoneme | |||
| phoneme tS# | |||
| import_phoneme base/tS | |||
| endphoneme | |||
| phoneme o: | |||
| vowel long starttype #o endtype #o | |||
| length 220 | |||
| FMT(vowel/o_2) | |||
| phoneme ~ | |||
| virtual | |||
| endphoneme | |||
| @@ -128,13 +128,16 @@ void DisplayVoices(FILE *f_out, char *language) | |||
| const char *p; | |||
| int len; | |||
| int count; | |||
| int c; | |||
| int j; | |||
| const espeak_VOICE *v; | |||
| const char *lang_name; | |||
| char age_buf[12]; | |||
| char buf[80]; | |||
| const espeak_VOICE **voices; | |||
| espeak_VOICE voice_select; | |||
| static char genders[4] = {' ','M','F',' '}; | |||
| static char genders[4] = {'-','M','F','-'}; | |||
| if((language != NULL) && (language[0] != 0)) | |||
| { | |||
| @@ -150,7 +153,7 @@ void DisplayVoices(FILE *f_out, char *language) | |||
| voices = espeak_ListVoices(NULL); | |||
| } | |||
| fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Langs\n"); | |||
| fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Languages\n"); | |||
| for(ix=0; (v = voices[ix]) != NULL; ix++) | |||
| { | |||
| @@ -168,8 +171,16 @@ void DisplayVoices(FILE *f_out, char *language) | |||
| if(count==0) | |||
| { | |||
| fprintf(f_out,"%2d %-12s%s%c %-17s %-11s ", | |||
| p[0],lang_name,age_buf,genders[v->gender],v->name,v->identifier); | |||
| for(j=0; j < sizeof(buf); j++) | |||
| { | |||
| // replace spaces in the name | |||
| if((c = v->name[j]) == ' ') | |||
| c = '_'; | |||
| if((buf[j] = c) == 0) | |||
| break; | |||
| } | |||
| fprintf(f_out,"%2d %-12s%s%c %-20s %-13s ", | |||
| p[0],lang_name,age_buf,genders[v->gender],buf,v->identifier); | |||
| } | |||
| else | |||
| { | |||
| @@ -691,7 +691,7 @@ int TranslateLetter(Translator *tr, char *word, char *phonemes, int control) | |||
| if(ph_buf[0] == 0) | |||
| { | |||
| if(al_offset == translator->langopts.alt_alphabet) | |||
| if((al_offset != 0) && (al_offset == translator->langopts.alt_alphabet)) | |||
| language = translator->langopts.alt_alphabet_lang; | |||
| else | |||
| if((alphabet != NULL) && (alphabet->language != 0) && !(al_flags & AL_NOT_LETTERS)) | |||
| @@ -876,6 +876,7 @@ void SetSpellingStress(Translator *tr, char *phonemes, int control, int n_chars) | |||
| // Numbers | |||
| static char ph_ordinal2[12]; | |||
| static char ph_ordinal2x[12]; | |||
| static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB *wtab, int roman) | |||
| @@ -1302,7 +1303,11 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out | |||
| if(control & 4) | |||
| { | |||
| sprintf(string,"_%d%cx",value,ord_type); // LANG=hu, special word for 1. 2. when there are no higher digits | |||
| found = Lookup(tr, string, ph_digits); | |||
| if((found = Lookup(tr, string, ph_digits)) != 0) | |||
| { | |||
| if(ph_ordinal2x[0] != 0) | |||
| strcpy(ph_ordinal, ph_ordinal2x); // alternate pronunciation (lang=an) | |||
| } | |||
| } | |||
| if(found == 0) | |||
| { | |||
| @@ -1362,8 +1367,7 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out | |||
| else | |||
| { | |||
| if((is_ordinal) && | |||
| ((units == 0) || (tr->langopts.numbers & NUM_SWAP_TENS) || (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL))) | |||
| if(is_ordinal) | |||
| { | |||
| sprintf(string,"_%dX%c", tens, ord_type); | |||
| if(Lookup(tr, string, ph_tens) != 0) | |||
| @@ -1457,7 +1461,7 @@ static int LookupNum2(Translator *tr, int value, const int control, char *ph_out | |||
| { | |||
| Lookup(tr, "_0and", ph_and); | |||
| if((is_ordinal) && (tr->langopts.numbers2 & NUM2_MULTIPLE_ORDINAL)) | |||
| if((is_ordinal) && (tr->langopts.numbers2 & NUM2_ORDINAL_NO_AND)) | |||
| ph_and[0] = 0; | |||
| if(tr->langopts.numbers & NUM_SWAP_TENS) | |||
| @@ -1884,6 +1888,8 @@ static int TranslateNumber_1(Translator *tr, char *word, char *ph_out, unsigned | |||
| ordinal = 2; | |||
| flags[0] |= FLAG_SKIPWORDS; | |||
| skipwords = 1; | |||
| sprintf(string,"_x#%s",suffix); | |||
| Lookup(tr, string, ph_ordinal2x); // is there an alternate pronunciation? | |||
| } | |||
| } | |||
| } | |||
| @@ -2179,7 +2185,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) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0))) | |||
| if(!iswalpha(next_char) && (thousands_exact==0)) | |||
| // if(!iswalpha(next_char) && !((wtab[thousandplex].flags & FLAG_HYPHEN_AFTER) && (thousands_exact != 0))) | |||
| strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc. | |||
| } | |||
| @@ -160,13 +160,16 @@ void DisplayVoices(FILE *f_out, char *language) | |||
| const char *p; | |||
| int len; | |||
| int count; | |||
| int c; | |||
| int j; | |||
| const espeak_VOICE *v; | |||
| const char *lang_name; | |||
| char age_buf[12]; | |||
| char buf[80]; | |||
| const espeak_VOICE **voices; | |||
| espeak_VOICE voice_select; | |||
| static char genders[4] = {' ','M','F',' '}; | |||
| static char genders[4] = {'-','M','F','-'}; | |||
| if((language != NULL) && (language[0] != 0)) | |||
| { | |||
| @@ -182,7 +185,7 @@ void DisplayVoices(FILE *f_out, char *language) | |||
| voices = espeak_ListVoices(NULL); | |||
| } | |||
| fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Langs\n"); | |||
| fprintf(f_out,"Pty Language Age/Gender VoiceName File Other Languages\n"); | |||
| for(ix=0; (v = voices[ix]) != NULL; ix++) | |||
| { | |||
| @@ -200,8 +203,16 @@ void DisplayVoices(FILE *f_out, char *language) | |||
| if(count==0) | |||
| { | |||
| fprintf(f_out,"%2d %-12s%s%c %-17s %-11s ", | |||
| p[0],lang_name,age_buf,genders[v->gender],v->name,v->identifier); | |||
| for(j=0; j < sizeof(buf); j++) | |||
| { | |||
| // replace spaces in the name | |||
| if((c = v->name[j]) == ' ') | |||
| c = '_'; | |||
| if((buf[j] = c) == 0) | |||
| break; | |||
| } | |||
| fprintf(f_out,"%2d %-12s%s%c %-20s %-13s ", | |||
| p[0],lang_name,age_buf,genders[v->gender],buf,v->identifier); | |||
| } | |||
| else | |||
| { | |||
| @@ -35,7 +35,7 @@ | |||
| #include "translate.h" | |||
| #include "wave.h" | |||
| const char *version_string = "1.47.03 21.Mar.13"; | |||
| const char *version_string = "1.47.03b 22.Mar.13"; | |||
| const int version_phdata = 0x014701; | |||
| int option_device_number = -1; | |||
| @@ -290,7 +290,7 @@ static const char transpose_map_latin[] = { | |||
| tr->langopts.max_initial_consonants = 3; | |||
| tr->langopts.replace_chars = NULL; | |||
| tr->langopts.ascii_language[0] = 0; // Non-Latin alphabet languages, use this language to speak Latin words, default is English | |||
| tr->langopts.alt_alphabet_lang = L('e','n'); | |||
| SetLengthMods(tr,201); | |||
| // tr->langopts.length_mods = length_mods_en; | |||
| @@ -539,9 +539,10 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable | |||
| tr->letter_bits_offset = OFFSET_BENGALI; | |||
| SetIndicLetters(tr); // call this after setting OFFSET_BENGALI | |||
| SetLetterBitsRange(tr,LETTERGP_B,0x01,0x01); // candranindu | |||
| SetLetterBitsRange(tr,LETTERGP_F,0x3e,0x4c); // vowel signs, but not virama | |||
| tr->langopts.numbers = 0x1; | |||
| tr->langopts.numbers = NUM_SWAP_TENS; | |||
| tr->langopts.break_numbers = 0x24924aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi | |||
| } | |||
| break; | |||
| @@ -679,7 +680,7 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels | |||
| tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA; | |||
| tr->langopts.numbers2 = 0x2 | NUM2_MULTIPLE_ORDINAL; // variant form of numbers before thousands | |||
| tr->langopts.numbers2 = 0x2 | NUM2_MULTIPLE_ORDINAL | NUM2_ORDINAL_NO_AND; // variant form of numbers before thousands | |||
| if(name2 == L_grc) | |||
| { | |||
| @@ -733,7 +734,7 @@ Translator *SelectTranslator(const char *name) | |||
| tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels | |||
| tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_AND_UNITS | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_ROMAN | NUM_ROMAN_AFTER; | |||
| tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL; | |||
| tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_ORDINAL_NO_AND; | |||
| if(name2 == L('c','a')) | |||
| { | |||
| @@ -745,7 +746,7 @@ Translator *SelectTranslator(const char *name) | |||
| if(name2 == L('a','n')) | |||
| { | |||
| tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2; | |||
| tr->langopts.numbers2 = 0; | |||
| tr->langopts.numbers2 = NUM2_ORDINAL_NO_AND; | |||
| } | |||
| else | |||
| if(name2 == L_pap) | |||
| @@ -1278,7 +1279,7 @@ SetLengthMods(tr,3); // all equal | |||
| tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable | |||
| tr->langopts.stress_flags = S_FINAL_DIM_ONLY | S_FINAL_NO_2 | S_INITIAL_2 | S_PRIORITY_STRESS; | |||
| tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_DFRACTION_2 | NUM_HUNDRED_AND | NUM_AND_UNITS | NUM_ROMAN; | |||
| tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS; | |||
| tr->langopts.numbers2 = NUM2_MULTIPLE_ORDINAL | NUM2_NO_TEEN_ORDINALS | NUM2_ORDINAL_NO_AND; | |||
| SetLetterVowel(tr,'y'); | |||
| ResetLetterBits(tr,0x2); | |||
| SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y | |||
| @@ -503,6 +503,7 @@ typedef struct { | |||
| #define NUM2_THOUSANDS_VAR4 0x100 | |||
| #define NUM2_THOUSANDS_VAR5 0x140 | |||
| #define NUM2_ORDINAL_NO_AND 0x800 | |||
| #define NUM2_MULTIPLE_ORDINAL 0x1000 | |||
| #define NUM2_NO_TEEN_ORDINALS 0x2000 | |||
| #define NUM2_MYRIADS 0x4000 | |||
| @@ -511,6 +512,7 @@ typedef struct { | |||
| // bits 1-4 use variant form of numbers before thousands,millions,etc. | |||
| // bits 6-8 use different forms of thousand, million, etc (M MA MB) | |||
| // bit9=(LANG=rw) say "thousand" and "million" before its number, not after | |||
| // bit11=(LANG=es,an) don't say 'and' between tens and units for ordinal numbers | |||
| // bit12=(LANG=el,es) use ordinal form of hundreds and tens as well as units | |||
| // bit13=(LANG=pt) don't use 11-19 numbers to make ordinals | |||
| // bit14=(LANG=ko) use myriads (groups of 4 digits) not thousands (groups of 3) | |||
| @@ -603,7 +603,7 @@ voice_t *LoadVoice(const char *vname, int control) | |||
| static const char *voices_asia = | |||
| "fa fa-pin hi hy hy-west id ka kn ku ml ne pa ta tr vi vi-hue zh zh-yue "; | |||
| static const char *voices_europe = | |||
| "an bg bs ca cs cy da el es et fi fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | |||
| "an bg bs ca cs cy da de el en en-us es et fi fr fr-be ga hr hu is it lt lv mk nl no pl pt-pt ro ru sk sq sr sv "; | |||
| strncpy0(voicename, vname, sizeof(voicename)); | |||
| @@ -1227,10 +1227,10 @@ static int ScoreVoice(espeak_VOICE *voice_spec, const char *spec_language, int s | |||
| p = voice->languages; // list of languages+dialects for which this voice is suitable | |||
| if(strcmp(spec_language,"mbrola")==0) | |||
| if(spec_n_parts < 0) | |||
| { | |||
| // only list mbrola voices | |||
| if(memcmp(voice->identifier,"mb/",3) == 0) | |||
| // match on the subdirectory | |||
| if(memcmp(voice->identifier, spec_language, spec_lang_len) == 0) | |||
| return(100); | |||
| return(0); | |||
| } | |||
| @@ -1363,6 +1363,7 @@ static int SetVoiceScores(espeak_VOICE *voice_select, espeak_VOICE **voices, int | |||
| int lang_len=0; | |||
| espeak_VOICE *vp; | |||
| char language[80]; | |||
| char buf[sizeof(path_home)+80]; | |||
| // count number of parts in the specified language | |||
| if((voice_select->languages != NULL) && (voice_select->languages[0] != 0)) | |||
| @@ -1375,6 +1376,26 @@ static int SetVoiceScores(espeak_VOICE *voice_select, espeak_VOICE **voices, int | |||
| n_parts++; | |||
| } | |||
| } | |||
| if((n_parts == 1) && (control & 1)) | |||
| { | |||
| if(strcmp(language, "mbrola") == 0) | |||
| { | |||
| language[2] = 0; // truncate to "mb" | |||
| lang_len = 2; | |||
| } | |||
| sprintf(buf, "%s/voices/%s", path_home, language); | |||
| if(GetFileLength(buf) == -2) | |||
| { | |||
| // A subdirectory name has been specified. List all the voices in that subdirectory | |||
| language[lang_len++] = PATHSEP; | |||
| language[lang_len] = 0; | |||
| n_parts = -1; | |||
| } | |||
| } | |||
| // select those voices which match the specified language | |||
| nv = 0; | |||
| for(ix=0; ix<n_voices_list; ix++) | |||
| @@ -1891,11 +1912,12 @@ ESPEAK_API const espeak_VOICE **espeak_ListVoices(espeak_VOICE *voice_spec) | |||
| } | |||
| else | |||
| { | |||
| // list all: omit variant voices and mbrola voices | |||
| // list all: omit variant voices and mbrola voices and test voices | |||
| j = 0; | |||
| for(ix=0; (v = voices_list[ix]) != NULL; ix++) | |||
| { | |||
| if((v->languages[0] != 0) && (strcmp(&v->languages[1],"variant") != 0) && (memcmp(v->identifier,"mb/",3) != 0)) | |||
| if((v->languages[0] != 0) && (strcmp(&v->languages[1],"variant") != 0) | |||
| && (memcmp(v->identifier,"mb/",3) != 0) && (memcmp(v->identifier,"test/",5) != 0)) | |||
| { | |||
| voices[j++] = v; | |||
| } | |||