Command line option --voices: Replace spaces in voice name by underscores. Show hyphen if no gender is specified. --voices=<directory> shows the voices in the specified subdirectory. Language changes: bn (Bengali), an. git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@331 d46cf337-b52f-0410-862d-fd96e6ae7743master
@@ -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 |
@@ -0,0 +1,263 @@ | |||
// Translation rules for Bengali | |||
// This file is UTF8 encoded | |||
// Numbers | |||
devanagari numbers are changed to latin characters before translation | |||
_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 | |||
ক 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 | |||
া '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 | |||
আমার $u | |||
আমরা $u // we | |||
আমাদের $u | |||
আপনি $u // you(formal) | |||
আপনাকে $u | |||
আপনার $u | |||
তুমি $u // you (informal) | |||
তোমায় $u | |||
তোমার $u | |||
তোমাদের $u | |||
তুই $u // you (informal) | |||
তোকে $u | |||
তোর $u | |||
এ $u // he/she/it | |||
আপনি $u | |||
এটার $u | |||
এর $u | |||
ইনি $u // they | |||
এনাকে $u | |||
এনার $u | |||
ও $u // he/she/it | |||
সে $u | |||
ওর $u | |||
তার $u | |||
ওরা $u // they | |||
তারা $u | |||
ওদের $u // unheṃ: them | |||
তাদের $u | |||
এই $u // e:I this/it | |||
এটা $u // e:ta: this/it | |||
এটার $u // e:ta:'r this/it | |||
এর $u // e:r this/it | |||
ওটা $u // o:ta: that | |||
ওটাকে $u // o:ta:ke: to that | |||
ওটার $u // o:ta:'r of that | |||
ওগুলো $u // o:gu:lo: those | |||
ওগুলোকে $u // o:gu:lo:ke: to those | |||
ওগুলোর $u // o:gu:lo:'r of those | |||
// Prepositions/Postpositions | |||
মধ্যে $u // moddhe in | |||
উপর $u // upor on, above | |||
নীচে $u // niche below | |||
পূর্ব্বে $u // purbe before, prior | |||
পর্য্যন্ত $u // parjonto till | |||
অব্দি $u // abdi till | |||
বিনা $u // bina without | |||
// Questions | |||
কেন $u $pause // kano why interrogative particle | |||
কি $u $pause // ki what | |||
কোথায় $u $pause // kothaay where | |||
কখন $u $pause // kakhon when | |||
কে $u $pause // ke who | |||
// Conjunctions | |||
এবং $u $pause // ebong: and | |||
আর $u $pause // aar: and | |||
অথবা $u $pause // athoba: or | |||
কিন্তু $u $pause // kintu: but | |||
যদি $pause // jodi: if | |||
তবু $pause // tobu: still, yet | |||
তবে $pause // tabe: if...then | |||
অথচ $u // athacho: yet | |||
// Verbs | |||
হয় $u | |||
ছিল $u // chilo: past aux | |||
ছিলেন $u // chilen | |||
করছি $u // korchi: continuous | |||
করছিলাম $u // korchilam: past indefinite | |||
করেছি $u // korechi: past | |||
// Exceptions |
@@ -0,0 +1,402 @@ | |||
// This file is UTF8 encoded | |||
// letter groups: | |||
// A vowel letters and vowel signs | |||
// B vowel signs and virama ् | |||
// C consonants | |||
// Y vowel letters and vowel signs | |||
.replace | |||
০ 0 | |||
১ 1 | |||
২ 2 | |||
৩ 3 | |||
৪ 4 | |||
৫ 5 | |||
৬ 6 | |||
৭ 7 | |||
৮ 8 | |||
৯ 9 | |||
// Vowels | |||
.group অ | |||
অ V | |||
অঁ O~ | |||
.group আ | |||
আ a | |||
আঁ a~ | |||
.group ই | |||
ই i | |||
ইঁ i~ | |||
.group ঈ | |||
ঈ i | |||
ঈঁ i~ | |||
.group উ | |||
উ u | |||
উঁ u~ | |||
.group ঊ | |||
ঊ u | |||
ঊঁ u~ | |||
.group ঋ | |||
ঋ ri | |||
ঋঁ ri~ | |||
.group ঌ | |||
ঌ l- | |||
.group এ | |||
এ & | |||
এঁ &~ | |||
.group ঐ | |||
ঐ oj | |||
ঐঁ o~j | |||
.group এ | |||
এ e | |||
এঁ e~ | |||
.group ও | |||
ও o | |||
ওঁ o~ | |||
.group ঔ | |||
ঔ ow | |||
ঔঁ o~w | |||
.group ও //?? | |||
ও o: | |||
// Vowel Signs | |||
.group া | |||
া a | |||
াঁ a~ | |||
.group ি | |||
ি i | |||
িঁ i~ | |||
.group ী | |||
ী i | |||
ীঁ i~ | |||
.group ূ | |||
ূ u | |||
ূঁ u~ | |||
.group ু | |||
ু u | |||
ুঁ u~ | |||
.group ৃ | |||
ৃ ri | |||
ৃঁ ri~ | |||
.group ে | |||
ে e | |||
েঁ e~ | |||
েউ ew | |||
.group ৈ | |||
ৈ oj | |||
ৈঁ o~j | |||
.group ো | |||
ো o | |||
োঁ o~ | |||
.group ৌ | |||
ৌ ow | |||
ৌঁ o~w | |||
// Consonants | |||
.group ক | |||
ক kV | |||
ক (B k | |||
ক (_ k | |||
.group খ | |||
খ k#V | |||
খ (B k# | |||
খ (_ k# | |||
.group গ | |||
গ gV | |||
গ (B g | |||
গ (_ g | |||
.group ঘ | |||
ঘ g#V | |||
ঘ (B g# | |||
ঘ (_ g# | |||
.group ঙ | |||
ঙ NV | |||
ঙ্ (B N | |||
ঙ্ (_ N | |||
.group চ | |||
চ tSV | |||
চ (B tS | |||
চ (_ tS | |||
.group ছ | |||
ছ tS#V | |||
ছ (B tS# | |||
ছ (_ tS# | |||
.group জ | |||
জ JV | |||
জ (B J | |||
জ (_ J | |||
জ্ব JV | |||
জ্ব (B J | |||
জ্ঞ ggo~ | |||
জ্ঞ (B gg | |||
.group ঝ | |||
ঝ J#V | |||
ঝ (B J# | |||
ঝ (_ J# | |||
.group ঞ | |||
ঞ nV | |||
ঞ্ (B n | |||
ঞ্ (_ n | |||
.group ট | |||
ট t.V | |||
ট (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 ণ | |||
ণ nV // should be [n.] if adjacent to t. or d. ? | |||
ণ (B n | |||
ণ (_ n | |||
.group ত | |||
ত tV | |||
ত (B t | |||
ত (_ t | |||
.group থ | |||
থ t#V | |||
থ (B t# | |||
থ (_ t# | |||
.group দ | |||
দ dV | |||
দ (B d | |||
দ (_ d | |||
.group ধ | |||
ধ d#V | |||
ধ (B d# | |||
ধ (_ d# | |||
.group ন | |||
ন nV | |||
ন (B n | |||
ন (_ n | |||
.group প | |||
প pV | |||
প (B p | |||
প (_ p | |||
.group ফ | |||
ফ fV // or [p#] ? | |||
ফ (B f | |||
ফ (_ f | |||
.group ব | |||
ব bV | |||
ব (B b | |||
ব (_ b | |||
.group ভ | |||
ভ b#V | |||
ভ (B b# | |||
ভ (_ b# | |||
.group ম | |||
ম mV | |||
ম (B m | |||
ম (_ m | |||
.group য় | |||
য় jV | |||
য় (B j | |||
য় (_ j | |||
.group য | |||
য dZV | |||
য (B dZ | |||
য (_ dZ | |||
য় jV // nukta | |||
য় (B j | |||
@) য় (_ j | |||
.group র | |||
র rV | |||
র (B r | |||
র (_ r | |||
্) র (_ rV | |||
.group ল | |||
ল lV | |||
ল (B l | |||
ল (_ l | |||
.group শ | |||
শ SV // or [s] ? | |||
শ (B S | |||
শ (_ S | |||
শ (্ল s | |||
.group ষ | |||
ষ SV | |||
ষ (B S | |||
ষ (_ S | |||
.group স | |||
স SV // or [s] ?? | |||
স (B S | |||
স (্থ s | |||
স (্ত s | |||
_) স্ব SV // shb | |||
_) স্ব (B S | |||
.group হ | |||
হ hV | |||
হ (B h | |||
হ (_ h | |||
.group হ্ব | |||
হ্ব vV | |||
হ্ব (B v | |||
হ্ব (_ v | |||
.group ৎ | |||
ৎ t | |||
.group ড় | |||
ড় r.V | |||
ড় (B r. | |||
.group ঢ় | |||
ঢ় r.V | |||
ঢ় (B r. | |||
.group ঁ | |||
ঁ O~ // candrabindu, nasalize the previous vowel | |||
.group ং | |||
ং N // anusvara/onushshor | |||
.group ঃ // visarga/bishorgo | |||
ঃ // doubles the following consonant | |||
ঃ (_ H | |||
.group ্ // virama/hoshonto | |||
্ | |||
.group ় | |||
় // nukta, modifies a consonant | |||
@@ -68,18 +68,16 @@ s; t t; tS ts v x z | |||
Z z; | |||
Dictionary bn_dict 2013-03-09 | |||
Dictionary bn_dict 2013-03-22 | |||
@ a a: aI a~ e E e: | |||
E: E~ i I i: i~ o O | |||
o: O: O~ o~ r- u U u: | |||
u~ V | |||
& a a~ e e~ i i~ l- | |||
o O o: O~ o~ u u~ V | |||
#X1 #X2 : b b# c c# d | |||
d# d. d.# g g# h H j | |||
J J# k k# l m n N | |||
n. n^ p p# r r. s S | |||
s. t t# t. t.# v w z | |||
: b b# d d# d. d.# dZ | |||
f g g# h H j J J# | |||
k k# l m n N n. p | |||
p# r r. s S t t# t. | |||
t.# tS tS# v w ~ | |||
Dictionary bo_dict 2013-03-09 | |||
@@ -185,7 +183,7 @@ p Q r R s s; t T | |||
ts v x z | |||
Dictionary en_dict 2013-03-20 | |||
Dictionary en_dict 2013-03-22 | |||
0 0# 3 3: @ @- @2 @5 | |||
@L a a# A: A@ aa aI aI3 | |||
@@ -333,7 +331,7 @@ m n N p r s S t | |||
tS v z Z | |||
Dictionary hu_dict 2013-03-21 | |||
Dictionary hu_dict 2013-03-22 | |||
a A a: e E e: i i: | |||
o o: u u: Y y y: Y: |
@@ -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^ | |||
@@ -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 | |||
@@ -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 |
@@ -24,7 +24,7 @@ consonants 11 119 | |||
fr-ca 11 146 | |||
nl 35 130 | |||
hi 57 149 | |||
bn 5 149 | |||
bn 12 152 | |||
ne 18 157 | |||
ur 6 149 | |||
pa 15 151 | |||
@@ -1554,6 +1554,7 @@ vowel/@_2 [@:] vi | |||
[V] sq | |||
[@/] sq | |||
[V] tt | |||
vowel/&_2 [&] bn | |||
vowel/@_3 [@#] en | |||
[@] en-sc | |||
[I] en-sc | |||
@@ -1748,14 +1749,13 @@ vowel/aa_8 [0] en-us | |||
vowel/aa_9 [a] fi | |||
[a] et | |||
[a:] hi | |||
[a:] bn | |||
[a] bn | |||
[a] ne | |||
[a] pa | |||
[a] ak | |||
[a] mt | |||
[A] kk | |||
vowel/@_bck [@] hi | |||
[@] bn | |||
[V] ne | |||
[@/] ne | |||
[@] ur | |||
@@ -1772,6 +1772,7 @@ vowel/e [e] base | |||
[e:] af | |||
[e:] cy | |||
[e:] ga | |||
[e] bn | |||
[e] ne | |||
[e] ta | |||
[e:] ta | |||
@@ -1998,6 +1999,7 @@ vowel/i#_5 [y] pt-pt | |||
[i/] pt-pt | |||
[y] ro | |||
vowel/i_6 [i] hi | |||
[i] bn | |||
[i] ta | |||
[i] kn | |||
[i] ml | |||
@@ -2102,7 +2104,6 @@ vowel/@_low [@] en-rp | |||
[@] hi | |||
[V] hi | |||
[@2] hi | |||
[@] bn | |||
[V] ne | |||
[@/] ne | |||
[@] ur | |||
@@ -2125,6 +2126,7 @@ vowel/o [o] base2 | |||
[o:] et | |||
[o] fr | |||
[o] hi | |||
[o] bn | |||
[o:] pa | |||
[o] ta | |||
[o:] ta | |||
@@ -2152,7 +2154,6 @@ vowel/o [o] base2 | |||
[o] kl | |||
vowel/o_2 [o:] cy | |||
[o:] hi | |||
[o:] bn | |||
[o:] hu | |||
[o:] la | |||
[o:] no | |||
@@ -2257,7 +2258,8 @@ vowel/oo_4 [O] base2 | |||
[O] pa | |||
[O] it | |||
[O] an | |||
vowel/oo_5 [O] pl | |||
vowel/oo_5 [O] bn | |||
[O] pl | |||
[O] is | |||
[O] sq | |||
vowel/oo_en [O] en | |||
@@ -2286,6 +2288,7 @@ vowel/u [u] base | |||
[u1] ga | |||
[u:] de | |||
[u] eo | |||
[u] bn | |||
[u] ml | |||
[u:] ml | |||
[U] lt |
@@ -0,0 +1,90 @@ | |||
//==================================================== | |||
// Bengali, inherits from Hindi | |||
//==================================================== | |||
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 | |||
ChangePhoneme(O) | |||
endphoneme | |||
phoneme a | |||
vowel starttype #a endtype #a | |||
length 225 | |||
FMT(vowel/aa_9) | |||
endphoneme | |||
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 | |||
@@ -0,0 +1,96 @@ | |||
phoneme + // high tone, use after a vowel | |||
stress | |||
Tone (5, 30, envelope/p_512, NULL) | |||
endphoneme | |||
phoneme @ | |||
vowel starttype #@ endtype #@ | |||
length 130 | |||
IF nextPh(H) THEN | |||
FMT(vowel/@_low) | |||
ENDIF | |||
FMT(vowel/@_bck) | |||
endphoneme | |||
phoneme V | |||
vowel starttype #@ endtype #@ | |||
length 130 | |||
ChangeIfNotStressed(@) | |||
IF nextPh(H) THEN | |||
FMT(vowel/@_low) | |||
ENDIF | |||
FMT(vowel/V_3) | |||
endphoneme | |||
phoneme i | |||
vowel long starttype #i endtype #i | |||
length 220 | |||
IfNextVowelAppend(;) | |||
FMT(vowel/i_fnt) | |||
endphoneme | |||
phoneme I | |||
vowel starttype #i endtype #i | |||
length 150 | |||
IfNextVowelAppend(;) | |||
FMT(vowel/ii_3) | |||
endphoneme | |||
phoneme e | |||
vowel long starttype #e endtype #e | |||
length 220 | |||
FMT(vowel/e_2) | |||
endphoneme | |||
phoneme E | |||
vowel long starttype #e endtype #e | |||
length 200 | |||
FMT(vowel/ee_2) | |||
endphoneme | |||
phoneme a | |||
vowel long starttype #a endtype #a | |||
length 220 | |||
FMT(vowel/aa_9) | |||
endphoneme | |||
phoneme O | |||
vowel long starttype #o endtype #o | |||
length 200 | |||
FMT(vowel/oo_4) | |||
endphoneme | |||
phoneme o: | |||
vowel long starttype #o endtype #o | |||
length 220 | |||
FMT(vowel/o) | |||
endphoneme | |||
phoneme U | |||
vowel starttype #u endtype #u | |||
length 150 | |||
FMT(vowel/uu_bck) | |||
endphoneme | |||
phoneme u | |||
vowel long starttype #u endtype #u | |||
length 220 | |||
FMT(vowel/u_bck) | |||
endphoneme | |||
phoneme eI // for English words | |||
import_phoneme en/eI | |||
endphoneme | |||
// Consonants | |||
phoneme v // Try English [v] | |||
import_phoneme base/v | |||
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 | |||
{ |
@@ -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.03a 21.Mar.13"; | |||
const char *version_string = "1.47.03b 22.Mar.13"; | |||
const int version_phdata = 0x014701; | |||
int option_device_number = -1; |
@@ -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; |
@@ -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; | |||
} |