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

@@ -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

+ 152
- 167
dictsource/bn_list View File

@@ -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

+ 225
- 140
dictsource/bn_rules View File

@@ -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




+ 1
- 0
dictsource/en_list View File

@@ -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

+ 1
- 1
dictsource/en_rules View File

@@ -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

+ 5
- 1
dictsource/hu_rules View File

@@ -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
- 1
espeak-data/voices/asia/pa View File

@@ -1,2 +1,2 @@
name punjabi-test
name punjabi
language pa

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

@@ -1,4 +1,4 @@
name french (Belgium)
name french-Belgium
language fr-be
language fr 8
gender male

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

@@ -1,3 +1,3 @@
language nl
name dutch-test
name dutch
gender male

+ 72
- 19
phsource/ph_bengali View File

@@ -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


BIN
phsource/vowel/oo_5 View File


+ 15
- 4
src/espeak.cpp View File

@@ -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
{

+ 15
- 4
src/speak.cpp View File

@@ -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
{

+ 1
- 1
src/synthdata.cpp View File

@@ -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;

+ 2
- 1
src/tr_languages.cpp View File

@@ -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;

+ 28
- 6
src/voices.cpp View File

@@ -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;
}

Loading…
Cancel
Save