Browse Source

Merge branch 'development'

master
Reece H. Dunn 12 years ago
parent
commit
8cdd8f0e5e

+ 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

+ 13
- 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^
haszo) n (jár n haszo) n (jár n
boszorká) ny (jelet n^ boszorká) ny (jelet n^
káno) n (jog 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 .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
szen) tj (akab tj szen) tj (akab tj
közérze) tj (aví tj közérze) tj (aví tj
ké) tj (átszm tj ké) tj (átszm tj
szavaza) tj (og tj
szavaza) tj (eg tj


.group ts .group ts
ts (_S2 tS //general rule with word end of ts letters ts (_S2 tS //general rule with word end of ts letters
_cha) tsz (ob t|s _cha) tsz (ob t|s
robo) ts (of t|S robo) ts (of t|S
merényle) ts (or 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 .group tt
ç 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

+ 1
- 1
espeak-data/voices/test/nci View File

name nahuatl - classical
name nahuatl-classical
language nci language nci
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
{ {

+ 13
- 6
src/numbers.cpp View File



if(ph_buf[0] == 0) 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; language = translator->langopts.alt_alphabet_lang;
else else
if((alphabet != NULL) && (alphabet->language != 0) && !(al_flags & AL_NOT_LETTERS)) if((alphabet != NULL) && (alphabet->language != 0) && !(al_flags & AL_NOT_LETTERS))
// Numbers // Numbers


static char ph_ordinal2[12]; 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) static int CheckDotOrdinal(Translator *tr, char *word, char *word_end, WORD_TAB *wtab, int roman)
if(control & 4) if(control & 4)
{ {
sprintf(string,"_%d%cx",value,ord_type); // LANG=hu, special word for 1. 2. when there are no higher digits 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) if(found == 0)
{ {
else 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); sprintf(string,"_%dX%c", tens, ord_type);
if(Lookup(tr, string, ph_tens) != 0) if(Lookup(tr, string, ph_tens) != 0)
{ {
Lookup(tr, "_0and", ph_and); 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; ph_and[0] = 0;


if(tr->langopts.numbers & NUM_SWAP_TENS) if(tr->langopts.numbers & NUM_SWAP_TENS)
ordinal = 2; ordinal = 2;
flags[0] |= FLAG_SKIPWORDS; flags[0] |= FLAG_SKIPWORDS;
skipwords = 1; skipwords = 1;
sprintf(string,"_x#%s",suffix);
Lookup(tr, string, ph_ordinal2x); // is there an alternate pronunciation?
} }
} }
} }
if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' ')) if((tr->langopts.numbers & NUM_NOPAUSE) && (next_char == ' '))
utf8_in(&next_char,p); 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. strcat(ph_out,str_pause); // don't add pause for 100s, 6th, etc.
} }



+ 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.03 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;

+ 7
- 6
src/tr_languages.cpp View File

tr->langopts.max_initial_consonants = 3; tr->langopts.max_initial_consonants = 3;
tr->langopts.replace_chars = NULL; 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.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); SetLengthMods(tr,201);
// tr->langopts.length_mods = length_mods_en; // tr->langopts.length_mods = length_mods_en;
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;
tr->langopts.param[LOPT_SONORANT_MIN] = 130; // limit the shortening of sonorants before short vowels 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.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) if(name2 == L_grc)
{ {
tr->langopts.param[LOPT_SONORANT_MIN] = 120; // limit the shortening of sonorants before short vowels 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.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')) if(name2 == L('c','a'))
{ {
if(name2 == L('a','n')) if(name2 == L('a','n'))
{ {
tr->langopts.stress_flags = S_FINAL_SPANISH | S_FINAL_DIM_ONLY | S_FINAL_NO_2; 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 else
if(name2 == L_pap) if(name2 == L_pap)
tr->langopts.stress_rule = STRESSPOSN_1R; // stress on final syllable 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.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.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'); SetLetterVowel(tr,'y');
ResetLetterBits(tr,0x2); ResetLetterBits(tr,0x2);
SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y SetLetterBits(tr,1,"bcdfgjkmnpqstvxz"); // B hard consonants, excluding h,l,r,w,y

+ 2
- 0
src/translate.h View File

#define NUM2_THOUSANDS_VAR4 0x100 #define NUM2_THOUSANDS_VAR4 0x100
#define NUM2_THOUSANDS_VAR5 0x140 #define NUM2_THOUSANDS_VAR5 0x140


#define NUM2_ORDINAL_NO_AND 0x800
#define NUM2_MULTIPLE_ORDINAL 0x1000 #define NUM2_MULTIPLE_ORDINAL 0x1000
#define NUM2_NO_TEEN_ORDINALS 0x2000 #define NUM2_NO_TEEN_ORDINALS 0x2000
#define NUM2_MYRIADS 0x4000 #define NUM2_MYRIADS 0x4000
// bits 1-4 use variant form of numbers before thousands,millions,etc. // 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) // 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 // 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 // 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 // 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) // bit14=(LANG=ko) use myriads (groups of 4 digits) not thousands (groups of 3)

+ 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