diff --git a/dictsource/an_list b/dictsource/an_list index 3151fcc2..43df719e 100644 --- a/dictsource/an_list +++ b/dictsource/an_list @@ -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 diff --git a/dictsource/bn_list b/dictsource/bn_list index cedd2668..25132df2 100644 --- a/dictsource/bn_list +++ b/dictsource/bn_list @@ -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 +_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'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 +_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 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 +_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 -_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 +_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 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 +_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 -_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# +// numbers above 50 need to be corrected +_50 p'O~tSaS +_5X p'O~tSaS +_59 'unOsat. -_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 +_60 s'at. +_6X s'at. +_69 'unOS'OttOr -_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: +_70 S'OttOr +_7X S'OttOr +_79 'unOaSi -_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 +_80 'aSi +_8X 'aSi +_89 'unOnObbOj -_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 +_90 n'ObbOj +_9X n'ObbOj + +_0C S'o +_0M1 h'ajar +_0M2 l'ak# +_0M3 k'ot.i +_0M4 'Orbud +_dpt dOsomik -_0C SO: -_0M1 h@z'a:r -_0M2 l'a:k# -_0M3 ko:tI -_0M4 o:r'bu:d -_dpt d@so:mIk // 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@ +ক 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 diff --git a/dictsource/bn_rules b/dictsource/bn_rules index 862261c0..bd8dd554 100644 --- a/dictsource/bn_rules +++ b/dictsource/bn_rules @@ -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 - -.group এঁ - এঁ E // candra e - -.group ঐ - ঐ e + ঋ ri + ঋঁ ri~ +.group ঌ + ঌ l- + + .group এ - এ e: + এ & + এঁ &~ + .group ঐ - ঐ E: // ?? [aI] [E:] [&:] - ঐং E~ - ঐঁ E~ -?2 ঐ aI // ?? [aI] [E:] [&:] + ঐ oj + ঐঁ o~j + +.group এ + এ e + এঁ e~ -.group ওঁ - ওঁ O // candra O - -.group ঔ - ঔ o .group ও - ও o: - ওং o~ // +anusvara - ওঁ o~ // +candrabindu + ও o + ওঁ o~ + .group ঔ - ঔ O: // ?? [aU] [O:] - ঔঁ O~ // +candrabindu + ঔ ow + ঔঁ o~w +.group ও //?? + ও o: + + + // 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@ + শ SV // or [s] ? + শ (B S + শ (_ S + + + শ (্ল s + .group ষ - ষ s - ষ (B s //?? + ষ SV + ষ (B S + ষ (_ S -.group স - স s@ - স (B s. - -.group হ - হ H@ - হ (B H@ - হ্ব v@ -.group হ্ব - B) হ্ব (B v@ +.group স + স SV // or [s] ?? + স (B S + + স (্থ s + স (্ত s + + _) স্ব SV // shb + _) স্ব (B S + + +.group হ + হ hV + হ (B h + হ (_ h + + +.group হ্ব + হ্ব vV + হ্ব (B v + হ্ব (_ v + + .group ৎ - ৎ (B t@t + ৎ t +.group ড় + ড় r.V + ড় (B r. + +.group ঢ় + ঢ় r.V + ঢ় (B r. + - // nukta, modifies a consonant -.group ্যা // ja'falaa - ্যা a - -.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 diff --git a/dictsource/en_list b/dictsource/en_list index c3f21695..b6927dbc 100644 --- a/dictsource/en_list +++ b/dictsource/en_list @@ -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 diff --git a/dictsource/en_rules b/dictsource/en_rules index ae1aae23..ec9a1374 100644 --- a/dictsource/en_rules +++ b/dictsource/en_rules @@ -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 diff --git a/dictsource/hu_rules b/dictsource/hu_rules index 299801b1..86932af1 100644 --- a/dictsource/hu_rules +++ b/dictsource/hu_rules @@ -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^ @@ -1038,6 +1037,9 @@ boszorká) ny (jelet 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 @@ -1928,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 @@ -2515,3 +2518,4 @@ csatlako) z (tok s ç tS ñ n^ ø Y + diff --git a/espeak-data/voices/asia/pa b/espeak-data/voices/asia/pa index 2ce846b7..4cd585d1 100644 --- a/espeak-data/voices/asia/pa +++ b/espeak-data/voices/asia/pa @@ -1,2 +1,2 @@ -name punjabi-test +name punjabi language pa diff --git a/espeak-data/voices/europe/fr-be b/espeak-data/voices/europe/fr-be index c2bb5357..4a741820 100644 --- a/espeak-data/voices/europe/fr-be +++ b/espeak-data/voices/europe/fr-be @@ -1,4 +1,4 @@ -name french (Belgium) +name french-Belgium language fr-be language fr 8 gender male diff --git a/espeak-data/voices/europe/nl b/espeak-data/voices/europe/nl index 6a8d5efd..beef33fa 100644 --- a/espeak-data/voices/europe/nl +++ b/espeak-data/voices/europe/nl @@ -1,3 +1,3 @@ language nl -name dutch-test +name dutch gender male diff --git a/phsource/ph_bengali b/phsource/ph_bengali index 1fceed4b..efb46a97 100644 --- a/phsource/ph_bengali +++ b/phsource/ph_bengali @@ -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 -endphoneme - - -phoneme a: - vowel long starttype #a endtype #a - length 230 +phoneme a + vowel starttype #a endtype #a + length 225 FMT(vowel/aa_9) endphoneme -phoneme o: - vowel long starttype #o endtype #o - length 220 - FMT(vowel/o_2) +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 ~ + virtual endphoneme diff --git a/phsource/vowel/oo_5 b/phsource/vowel/oo_5 index ad18bde5..98b4651a 100644 Binary files a/phsource/vowel/oo_5 and b/phsource/vowel/oo_5 differ diff --git a/src/espeak.cpp b/src/espeak.cpp index f9669a9e..5fd81d45 100644 --- a/src/espeak.cpp +++ b/src/espeak.cpp @@ -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 { diff --git a/src/speak.cpp b/src/speak.cpp index 559d7d18..e1fa4b55 100644 --- a/src/speak.cpp +++ b/src/speak.cpp @@ -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 { diff --git a/src/synthdata.cpp b/src/synthdata.cpp index 7eda9693..f9c2c8f7 100644 --- a/src/synthdata.cpp +++ b/src/synthdata.cpp @@ -35,7 +35,7 @@ #include "translate.h" #include "wave.h" -const char *version_string = "1.47.03a 21.Mar.13"; +const char *version_string = "1.47.03b 22.Mar.13"; const int version_phdata = 0x014701; int option_device_number = -1; diff --git a/src/tr_languages.cpp b/src/tr_languages.cpp index aeea1a93..fe5b5867 100644 --- a/src/tr_languages.cpp +++ b/src/tr_languages.cpp @@ -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; diff --git a/src/voices.cpp b/src/voices.cpp index 8fa66944..be7da4f4 100644 --- a/src/voices.cpp +++ b/src/voices.cpp @@ -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; ixlanguages[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; }