Browse Source

Merge branch 'upstream' into development

Conflicts:
	dictsource/bn_list
	dictsource/bn_rules
	dictsource/dict_phonemes
	phsource/compile_report
	phsource/ph_bengali
master
Reece H. Dunn 12 years ago
parent
commit
b5bb7c7b63

+ 47
- 59
dictsource/an_list View File

_13 tr'eTe _13 tr'eTe
_14 kat'orTe _14 kat'orTe
_15 k'inTe _15 k'inTe
_20 B'inte
_2X B,int
_20 b'inte
_2X b,int
_3X tr'enta _3X tr'enta
_4X kwar'anta _4X kwar'anta
_5X Tinkw'anta _5X Tinkw'anta




// ordinal numbers // 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 _1ox prim'Er
_2ox seQ'und _2ox seQ'und
_3ox tErT'Er _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 _3Xo trentaI
_4Xo kwarantaI _4Xo kwarantaI
_5Xo TinkwantaI _5Xo TinkwantaI
_7Xo sEtantaI _7Xo sEtantaI
_8Xo gwitantaI _8Xo gwitantaI
_9Xo noBantaI _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 // characters
la $u la $u
los $u los $u
las $u las $u
ro $u
ra $u
ros $u
ras $u
ne $u ne $u
nes $u nes $u

me $u me $u
te $u te $u
se $u se $u
sin $u sin $u
su $u su $u
ye $u ye $u
ro $u
ra $u
ros $u
ras $u
el $u el $u
es $u es $u
els $u els $u
ers $u
mis $u mis $u
tus $u tus $u
sus $u sus $u
bel $u bel $u
bella $u bella $u
bells $u bells $u
bels $u
bellas $u bellas $u
bellos $u bellos $u
que $u que $u
on $u on $u
aon $u aon $u
porque $u porque $u
dende $u
entre $u
contra $u
enta $u
sinde $u
per $u per $u
pus $u pus $u
dica $u
sino $u
ni $u ni $u
pero $u
ibi $u
bi $u bi $u
i $u+ i $u+
ie $u ie $u
hu $u hu $u
sant $u sant $u
donya $u
don $u
se'n sen $u




//abbreviations //abbreviations

+ 152
- 167
dictsource/bn_list View File



// Numbers // Numbers
devanagari numbers are changed to latin characters before translation 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 // 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 // Punctuation
। dVn.d.V । dVn.d.V



// Pronouns // Pronouns
আমি $u // main: I আমি $u // main: I
আমায় $u আমায় $u
তোর $u তোর $u


এ $u // he/she/it এ $u // he/she/it
একে $u
আপনি $u
এটার $u এটার $u
এর $u এর $u




// Verbs // Verbs


হয় $u


ছিল $u // chilo: past aux ছিল $u // chilo: past aux
ছিলেন $u // chilen ছিলেন $u // chilen






// Exceptions // Exceptions
ক্রিকেট krIk'Et
সাইবার s'aIb@r

+ 225
- 140
dictsource/bn_rules View File

// C consonants // C consonants
// Y vowel letters and vowel signs // Y vowel letters and vowel signs


// conditional rules
// ?2 use diphthong for "ai"
// ?3 use diphthong for "au"




.replace .replace




.group অ .group অ
অ a
অ V
অঁ O~


.group আ .group আ
আ a:
আ a
আঁ a~


.group ই .group ই
I
i
ইঁ i~ ইঁ i~
ইং I'ng


.group ঈ .group ঈ
ঈ i:
ঈ (_ i
ঈ i
ঈঁ i~



.group উ .group উ
উ U
উ u
উঁ u~


.group ঊ .group ঊ
ঊ u:
ঊং u~ // + anusvara
ঊঁ u~ // + candrabinbu
ঊ u
ঊঁ u~


.group ঋ .group ঋ
ঋ rI
ঋ ri
ঋঁ ri~


.group এঁ
এঁ E // candra e
.group ঌ
ঌ l-
.group এ
এ &
এঁ &~


.group ঐ .group ঐ
ঐ e
ঐ oj
ঐঁ o~j


.group এ .group এ
এ e:
এ e
এঁ e~


.group ঐ
ঐ E: // ?? [aI] [E:] [&:]
ঐং E~
ঐঁ E~
?2 ঐ aI // ?? [aI] [E:] [&:]


.group ও
ও o
ওঁ o~


.group ওঁ
ওঁ O // candra O

.group ঔ .group ঔ
ঔ o
ঔ ow
ঔঁ o~w


.group ও
.group ও //??
ও o: ও o:
ওং o~ // +anusvara
ওঁ o~ // +candrabindu


.group ঔ
ঔ O: // ?? [aU] [O:]
ঔঁ O~ // +candrabindu




// Vowel Signs // Vowel Signs


.group া .group া
া a:
া a
াঁ a~
.group ি .group ি
ি I
ি i
িঁ i~
.group ী .group ী
ী i:
(_ i
i
ঁ i~


.group ূ .group ূ
ূ U
ূ u
ূঁ u~


.group ু .group ু
ু u:
ু u
ুঁ u~
.group ৃ .group ৃ
ৃ rI
ৃ ri
ৃঁ ri~


.group ে .group ে
ে e:
ে e
েঁ e~
েউ ew



.group ৈ .group ৈ
ৈ E: // ?? [aI] [E:] [&:]
ৈ oj
ৈঁ o~j
.group ো .group ো
ো o:
ো o
োঁ o~
.group ৌ .group ৌ
ৌ O: // [O:] or [aU] ??
ৌ ow
ৌঁ o~w
.group ॐ
ॐ o~m


// Consonants // Consonants


.group ক .group ক
ক k@
ক kV
ক (B k ক (B k
ক্য (्য kja:
ক্ষ k#'@
ক (_ k


.group খ .group খ
খ k#V খ k#V
খ (B k#@
খ (B k#
খ (_ k#
.group গ .group গ
গ gV গ gV
গ (B g@
ঈ)গ (ল g@
গ (B g
গ (_ g



.group ঘ .group ঘ
ঘ g#V ঘ g#V
ঘ (B g#
ঘ (B g#
ঘ (_ g#


.group ঙ .group ঙ
ঙ N'g
ঙ NV
ঙ্ (B N ঙ্ (B N
গা)ঙ (চি Ng@
ঙ্ (_ N



.group চ .group চ
চ cV
চ (B c
্য) চ্য c'j@
চ tSV
চ (B tS
চ (_ tS



.group ছ .group ছ
ছ c#V
ছ (B c#@
ছ tS#V
ছ (B tS#
ছ (_ tS#


.group জ .group জ
জ J@
জ (B J@
্) জ zV
জ (B J@
জ JV
জ (B J
জ (_ J
জ্ব JV
জ্ব (B J
জ্ঞ ggo~
জ্ঞ (B gg



.group ঝ .group ঝ
ঝ J#@
ঝ (B J#@
ঝ J#V
ঝ (B J#
ঝ (_ J#


.group ঞ .group ঞ
ঞ n^V
ঞ্ (B n^
ঞ nV
ঞ্ (B n
ঞ্ (_ n

.group ট .group ট
ট t.V ট t.V
ট (B t.V
ট (्য় t.j@
ট (B t.
ট (_ t.



.group ঠ .group ঠ
ঠ t.#V ঠ t.#V
ঠ (B t.# ঠ (B t.#
ঠ (_ t.#


.group ড .group ড
ড d.V ড d.V
ড (B d. ড (B d.
ড (_ d.


ড় r.V // nukta
ড় (B r.
.group ঢ .group ঢ
ঢ d.#V ঢ d.#V
ঢ (B d.# ঢ (B d.#
ঢ (_ d.#
.group ণ .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 ত .group ত
ত t@
ত (B t@
ত tV
ত (B t
ত (_ t

.group থ .group থ
থ t#@
থ t#V
থ (B t# থ (B t#
ক) থ (ন t#@
থ (_ t#



.group দ .group দ
দ d@
দ dV
দ (B d দ (B d
ব) দ (ল d@
দ (_ d



.group ধ .group ধ
ধ d#@
ধ d#V
ধ (B d# ধ (B d#
সা) ধ (ন d#@

.group ন
ন n@
ন (B n@
্) ন (্ n@
র্) ন (_ r.n // r +virama অর্ণব
ধ (_ d#




.group ন .group ন
ন n: // should this be a long [n] ?
ন nV
ন (B n
ন (_ n


.group প .group প
প p@
প pV
প (B p প (B p
্য (्য p:
(_ p


.group ফ .group ফ
p#@
ফ (B p#@
p#@
fV // or [p#] ?
ফ (B f
(_ f


.group ব .group ব
ব b@
ব (B b@
ব bV
ব (B b
ব (_ b


.group ভ .group ভ
ভ b#@
ভ (B b#@
ভ b#V
ভ (B b#
ভ (_ b#


.group ম .group ম
ম mV ম mV
्) ম (_ mV
র্) ম (_ r.m@ // r +virama
ন্) ম (_ n.m // n +virama
ম (B m
ম (_ m


.group য় .group য়
য় jV
য় (B jV
.group য
য J@
য (B J@
्) য (_ ja
য় jV
য় (B j
য় (_ j


.group য
য dZV
য (B dZ
য (_ dZ
য় jV // nukta
য় (B j
@) য় (_ j

.group র .group র
র rV র rV
র (B r র (B r
्) র (_ r@

র (_ r
্) র (_ rV


.group ল .group ল
ল l
ল (B l@
ক) ল (ম l@
ল lV
ল (B l
ল (_ l




.group শ
শ S@
শ (B S@


.group শ
শ SV // or [s] ?
শ (B S
শ (_ S
শ (্ল s

.group ষ .group ষ
ষ s
ষ (B s //??
ষ SV
ষ (B S
ষ (_ S


.group স .group স
স s@
স (B s.

স SV // or [s] ??
স (B S
স (্থ s
স (্ত s
_) স্ব SV // shb
_) স্ব (B S

.group হ .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 ং .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







+ 1
- 0
dictsource/en_list View File

Anglesey aNg@Lsi Anglesey aNg@Lsi
Argyle A@g'aIl Argyle A@g'aIl
Argyll A@g;aIl Argyll A@g;aIl
Armagh A@m'A:
Bacup beIk@p Bacup beIk@p
Berwick bErIk Berwick bErIk
Betws bEtUs Betws bEtUs

+ 1
- 1
dictsource/en_rules View File

te (rrest t2@ te (rrest t2@
r) tga (g gI r) tga (g gI
@) t (ia S @) t (ia S
s) t (l ?
s) t (l
to (morr t@ to (morr t@
_) to (nn tV _) to (nn tV
t (ooth t2 t (ooth t2

+ 5
- 1
dictsource/hu_rules View File

szí) n (ját n szí) n (ját n
szí) n (józan n szí) n (józan n
nyj n^n^ nyj n^n^

_) nem (- nEm // has $combine attribute in hu_list, combine with the next word _) nem (- nEm // has $combine attribute in hu_list, combine with the next word
me) nny (ország n^ me) nny (ország n^
pihe) nj (_S2 n^ pihe) nj (_S2 n^
legé) ny (jár n^ legé) ny (jár n^
szé) n (jelek n szé) n (jelek n
teljesítmé) ny (j 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 .group o
o o o o
_robo) t (szoftve t _robo) t (szoftve t
diva) t (cirk t diva) t (cirk t
álla) t (cirk t álla) t (cirk t
szen) t (szob t


.group tj .group tj
C) tj c C) tj c
ç tS ç tS
ñ n^ ñ n^
ø Y ø Y


+ 1
- 1
espeak-data/voices/asia/pa View File

name punjabi-test
name punjabi
language pa language pa

+ 1
- 1
espeak-data/voices/europe/fr-be View File

name french (Belgium)
name french-Belgium
language fr-be language fr-be
language fr 8 language fr 8
gender male gender male

+ 1
- 1
espeak-data/voices/europe/nl View File

language nl language nl
name dutch-test
name dutch
gender male gender male

+ 72
- 19
phsource/ph_bengali View File

// Bengali, inherits from Hindi // 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 ENDIF
FMT(vowel/@_bck)

ChangePhoneme(O)
endphoneme 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 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 endphoneme




phoneme o:
vowel long starttype #o endtype #o
length 220
FMT(vowel/o_2)
phoneme ~
virtual
endphoneme endphoneme



BIN
phsource/vowel/oo_5 View File


+ 15
- 4
src/espeak.cpp View File

const char *p; const char *p;
int len; int len;
int count; int count;
int c;
int j;
const espeak_VOICE *v; const espeak_VOICE *v;
const char *lang_name; const char *lang_name;
char age_buf[12]; char age_buf[12];
char buf[80];
const espeak_VOICE **voices; const espeak_VOICE **voices;
espeak_VOICE voice_select; espeak_VOICE voice_select;


static char genders[4] = {' ','M','F',' '};
static char genders[4] = {'-','M','F','-'};


if((language != NULL) && (language[0] != 0)) if((language != NULL) && (language[0] != 0))
{ {
voices = espeak_ListVoices(NULL); 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++) for(ix=0; (v = voices[ix]) != NULL; ix++)
{ {


if(count==0) 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 else
{ {

+ 15
- 4
src/speak.cpp View File

const char *p; const char *p;
int len; int len;
int count; int count;
int c;
int j;
const espeak_VOICE *v; const espeak_VOICE *v;
const char *lang_name; const char *lang_name;
char age_buf[12]; char age_buf[12];
char buf[80];
const espeak_VOICE **voices; const espeak_VOICE **voices;
espeak_VOICE voice_select; espeak_VOICE voice_select;


static char genders[4] = {' ','M','F',' '};
static char genders[4] = {'-','M','F','-'};


if((language != NULL) && (language[0] != 0)) if((language != NULL) && (language[0] != 0))
{ {
voices = espeak_ListVoices(NULL); 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++) for(ix=0; (v = voices[ix]) != NULL; ix++)
{ {


if(count==0) 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 else
{ {

+ 1
- 1
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.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; const int version_phdata = 0x014701;


int option_device_number = -1; int option_device_number = -1;

+ 2
- 1
src/tr_languages.cpp View File

tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable tr->langopts.stress_flags = S_MID_DIM | S_FINAL_DIM; // use 'diminished' for unstressed final syllable
tr->letter_bits_offset = OFFSET_BENGALI; tr->letter_bits_offset = OFFSET_BENGALI;
SetIndicLetters(tr); // call this after setting 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 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 tr->langopts.break_numbers = 0x24924aa8; // for languages which have numbers for 100,000 and 100,00,000, eg Hindi
} }
break; break;

+ 28
- 6
src/voices.cpp View File

static const char *voices_asia = 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 "; "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 = 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)); strncpy0(voicename, vname, sizeof(voicename));


p = voice->languages; // list of languages+dialects for which this voice is suitable 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(100);
return(0); return(0);
} }
int lang_len=0; int lang_len=0;
espeak_VOICE *vp; espeak_VOICE *vp;
char language[80]; char language[80];
char buf[sizeof(path_home)+80];


// count number of parts in the specified language // count number of parts in the specified language
if((voice_select->languages != NULL) && (voice_select->languages[0] != 0)) if((voice_select->languages != NULL) && (voice_select->languages[0] != 0))
n_parts++; 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 // select those voices which match the specified language
nv = 0; nv = 0;
for(ix=0; ix<n_voices_list; ix++) for(ix=0; ix<n_voices_list; ix++)
} }
else else
{ {
// list all: omit variant voices and mbrola voices
// list all: omit variant voices and mbrola voices and test voices
j = 0; j = 0;
for(ix=0; (v = voices_list[ix]) != NULL; ix++) 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; voices[j++] = v;
} }

Loading…
Cancel
Save