Browse Source

Merge branch 'upstream' into development

Conflicts:
	dictsource/dict_phonemes
	phsource/compile_report
master
Reece H. Dunn 11 years ago
parent
commit
46efa9166a

+ 1
- 0
dictsource/cy_rules View File

@@ -22,6 +22,7 @@

ae AY
ai aI
a'i (K aI
au aY
// @) au (_ a
aw (+ aU

+ 129
- 8
dictsource/el_list View File

@@ -227,6 +227,7 @@ $ Dol'aria

αλλά $u $pause // but
και ke $u // and (don't change to [ge] after n)
καί ke $u // polytonic
ή $u $pause // or
ότι $u $pause // that
αν $u $pause // if, whether
@@ -276,21 +277,141 @@ _ο 'omikron
ψ psi
ω om'eQa

ά ,alfa|t'onos
ά ,alfa||t'onos
έ ,epsilon|t'onos
_ή ,ita|t'onos
ή ,ita|t'onos $atend
ί i,ota|t'onos
ΰ ,ipsilon|t'onos
ϊ i'ota
ϋ 'ipsilon
_ή ,ita||t'onos
ή ,ita||t'onos $atend
ί i,ota||t'onos
ϊ i'ota||Di;alitik'a
ΐ i,ota||Di;alitik'a||t'onos // + dialytika
ό ,omikron|t'onos
ύ ,ipsilon|t'onos
ώ om,eQa|t'onos
ϋ 'ipsilon||Di;alitik'a
ΰ ,ipsilon|Di;alitik'a||t'onos
ώ om,eQa||t'onos

ὰ ,alfa||var'ia
ὲ ,epsilon|var'ia
ὴ ,ita||var'ia
ὶ i,ota||var'ia
ῒ i,ota||Di;alitik'a||var'ia
ὸ ,omikron|var'ia
ὺ ,ipsilon|var'ia
ῢ ,ipsilon|Di;alitik'a||var'ia
ὼ om,eQa||var'ia

ά ,alfa||oks'ia
έ ,epsilon|oks'ia
ή ,ita||oks'ia
ί i,ota||oks'ia
ΐ i,ota||Di;alitik'a||oks'ia
ό ,omikron|oks'ia
ύ ,ipsilon|oks'ia
ΰ ,ipsilon|Di;alitik'a||oks'ia
ώ om,eQa||oks'ia

ᾶ ,alfa||perispom'eni
ῆ ,ita||perispom'eni
ῖ i,ota||perispom'eni
ῗ i,ota||Di;alitik'a||perispom'eni
ῦ ,ipsilon||perispom'eni
ῧ ,ipsilon||Di;alitik'a||perispom'eni
ῶ om,eQa||perispom'eni

ἁ ,alfa||Das'ia
ἑ ,epsilon|Das'ia
ἡ ,ita||Das'ia $atend
ἱ i,ota||Das'ia
ὁ ,omikron|Das'ia $atend
ὑ ,ipsilon|Das'ia
ὡ om,eQa||Das'ia

ἀ ,alfa||psil'i
ἂ ,alfa||psil'i||var'ia
ἄ ,alfa||psil'i||oks'ia
ἆ ,alfa||psil'i||perispom'eni

ἐ ,epsilon|psil'i
ἒ ,epsilon|psil'i||var'ia
ἔ ,epsilon|psil'i||oks'ia

ἠ ,ita||psil'i
ἢ ,ita||psil'i||var'ia
ἤ ,ita||psil'i||oks'ia
ἦ ,ita||psil'i||perispom'eni

ἰ i,ota||psil'i
ἲ i,ota||psil'i||var'ia
ἴ i,ota||psil'i||oks'ia
ἶ i,ota||psil'i||perispom'eni

ὀ ,omikron|psil'i
ὂ ,omikron|psil'i||var'ia
ὄ ,omikron|psil'i||oks'ia

ὐ ,ipsilon|psil'i
ὒ ,ipsilon|psil'i||var'ia
ὔ ,ipsilon|psil'i||oks'ia
ὖ ,ipsilon|psil'i||perispom'eni

ὠ om,eQa||psil'i
ὢ om,eQa||psil'i||var'ia
ὤ om,eQa||psil'i||oks'ia
ὦ om,eQa||psil'i||perispom'eni

ἁ ,alfa||Das'ia
ἃ ,alfa||Das'ia||var'ia
ἅ ,alfa||Das'ia||oks'ia
ἇ ,alfa||Das'ia||perispom'eni

ἑ ,epsilon|Das'ia
ἓ ,epsilon|Das'ia||var'ia
ἕ ,epsilon|Das'ia||oks'ia

ἡ ,ita||Das'ia $atend
ἣ ,ita||Das'ia||var'ia
ἥ ,ita||Das'ia||oks'ia
ἧ ,ita||Das'ia||perispom'eni

ἱ i,ota||Das'ia
ἳ i,ota||Das'ia||var'ia
ἵ i,ota||Das'ia||oks'ia
ἷ i,ota||Das'ia||perispom'eni

ὁ ,omikron|Das'ia $atend
ὃ ,omikron|Das'ia||var'ia
ὅ ,omikron|Das'ia||oks'ia

ὑ ,ipsilon|Das'ia
ὓ ,ipsilon|Das'ia||var'ia
ὕ ,ipsilon|Das'ia||oks'ia
ὗ ,ipsilon|Das'ia||perispom'eni

ὡ om,eQa||Das'ia
ὣ om,eQa||Das'ia||var'ia
ὥ om,eQa||Das'ia||oks'ia
ὧ om,eQa||Das'ia||perispom'eni

// ypogegrammeni
ᾳ ,alfa||||ipojeQram'eni

ῃ ,ita||||ipojeQram'eni

ῳ om,eQa||ipojeQram'eni
ῷ om,eQa||perispom'eni||ipojeQram'eni
ᾠ om,eQa||psil'i||ipojeQram'eni

_. tel'ia
_, k'oma

U+342 perispom'eni // combining accent
U+345 ipojeQram'eni // combining iota subscript
U+37a ipojeQram'eni // iota subscript
U+1fbf psil'i
U+1fc0 perispom'eni
U+1fc1 Di;alitik'a||perispom'eni


// Jer
μου $u
σου $u

+ 117
- 1
dictsource/el_rules View File

@@ -12,6 +12,117 @@

.L01 αι ε ι η υ οι ει αί έ ί ή ύ οί εί

.replace
// replace varia by tonos
ὰ ά
ὲ έ
ὴ ή
ὶ ί
ῒ ΐ
ὸ ό
ὺ ύ
ῢ ΰ
ὼ ώ

// replace oxia by tonos
ά ά
έ έ
ή ή
ί ί
ΐ ΐ
ό ό
ύ ύ
ΰ ΰ
ώ ώ

// replace perispomeni by tonos
ᾶ ά
ῆ ή
ῖ ί
ῗ ΐ
ῦ ύ
ῧ ΰ
ῶ ώ


// remove psili
ἀ α
ἂ ά
ἄ ά
ἆ ά

ἐ ε
ἒ έ
ἔ έ

ἠ η
ἢ ή
ἤ ή
ἦ ή

ἰ ι
ἲ ί
ἴ ί
ἶ ί

ὀ ο
ὂ ό
ὄ ό

ὐ υ
ὒ ύ
ὔ ύ
ὖ ύ

ὠ ω
ὢ ώ
ὤ ώ
ὦ ώ


// remove dasia
ἁ α
ἃ ά
ἅ ά
ἇ ά

ἑ ε
ἓ έ
ἕ έ

ἡ η
ἣ ή
ἥ ή
ἧ ή

ἱ ι
ἳ ί
ἵ ί
ἷ ί

ὁ ο
ὃ ό
ὅ ό

ὑ υ
ὓ ύ
ὕ ύ
ὗ ύ

ὡ ω
ὣ ώ
ὥ ώ
ὧ ώ

// ypogegrammeni
ᾳ α

ῃ η

ῳ ω
ῷ ώ // perispomeni + y
ᾠ ω // psili + y


.group α
α a
@@ -242,15 +353,20 @@
έ 'e
ή 'i
ί 'i
ΰ 'i
ΐ 'i // dialytika + tonos
ϊ i
ϋ i
ό 'o
όη 'oI
όι 'oI
ύ 'i
ΰ 'i // dialytika + tonos
ώ 'o


ͅ // combining ypogegrammeni
ͺ // ypogegrammeni
. tel'ia
, (D k'oma
! Tavmastik'o

+ 277
- 139
dictsource/en_list
File diff suppressed because it is too large
View File


+ 164
- 72
dictsource/en_rules
File diff suppressed because it is too large
View File


+ 4
- 0
dictsource/eu_list View File

@@ -126,3 +126,7 @@ ean $u
eko $u
era $u
ko $u


etxe $1 $only


+ 2
- 0
dictsource/eu_rules View File

@@ -33,6 +33,8 @@
ei eI
eu eU

&) ek (_S2 ek

.group f
f f

+ 3
- 3
dictsource/gu_list View File

@@ -103,7 +103,7 @@ _85 pInc'a:si
_86 c#e:'V~si
_87 s@t:j'a:si
_88 ,Vt.#j'a:si
_89 nIvj'a:si
_89 ne:vj'a:Si

_90 n'e:vu~
_91 e:k'a:n.u~
@@ -139,7 +139,7 @@ _dpt _d@s@ml'o:_
છ ch@
જ J@
જ઼ z@
Jh@
z@
ઞ n^@
ટ t.@
ઠ t.#@
@@ -162,7 +162,7 @@ _dpt _d@s@ml'o:_
ર r@

લ l@
l.@
@r.@ // According to chart this is lla ( ળ 0AB3)but it is told that it looks like adda ( ડ઼ 0AA1 + 0ABC)
વ v@
શ S@
ષ s.@ // retroflex [S]

+ 11
- 12
dictsource/gu_rules View File

@@ -38,8 +38,8 @@

.group ઇ
ઇ I
// ઇઁ i~
ઇં i~
// ઇઁ In
ઇં In

.group ઈ
ઈ i:
@@ -99,12 +99,11 @@
ા (ઁ V~
ાઁ (_ V~
ાં V~
ાવ aU

.group િ
િ I
// િઁ i~
િં i~
// િઁ In
િં In

.group ી
ી i:
@@ -242,9 +241,9 @@
જ્ઞ gn.V
જ્ઞ (B gn.

.group ઝ
J#V
ઝ (B J#
.group ઝ // According to chart this is jha ( ઝ 0A9D)but it is told that it looks like za ( જ઼ 0A9C + 0ABC)
zV
ઝ (B z

.group ઞ
ઞ n^V
@@ -386,10 +385,10 @@
લ (B l
્) લ (_ l@

.group ળ
l.V
ળ (B l.
્) ળ (_ l.@
.group ળ // According to chart this is lla ( ળ 0AB3)but it is told that it looks like adda ( ડ઼ 0AA1 + 0ABC)
r.V
ળ (B r.
્) ળ (_ r.@

.group વ
વ vV

+ 5
- 6
dictsource/hbs_list View File

@@ -150,8 +150,8 @@ _tld t'ild&
_‚ 'otvoReni||n'avodnIk
_„ sp'uSteni||n'avodnIk
?2 _„ z&tvoReni||n'avodnIk
… tr*'i||t'otSke
?4 … tr*'i||t'atSke
_… tr*'i||t'otSke
?4 _… tr*'i||t'atSke
† kr*'iZ
?2 † kr-'st
‡ dv'ostr*Uki||kr*'iZ
@@ -162,8 +162,8 @@ _tld t'ild&
_’ j'ednostr*'uki||n'avodnIk
_“ 'otvoReni||n'avodnIk
_” z'atvoReni||n'avodnIk
• kr*'upna||t'otSk&
?4 • kr*'upna||t'atSk&
_• kr*'upna||t'otSk&
?4 _• kr*'upna||t'atSk&
_– En||ts'r-t&
_— Em||ts'r-t&
™ pr*'o'izvodZ&tS
@@ -181,11 +181,10 @@ _tld t'ild&
÷ p'odijel^,eno
?2 ÷ p'odel^,eno

_$ d'ol&R
$ d'ol&R
_- m'inus
_* zvj'ezdits&
?2 _* zv'ezdits&
_= j'edn&ko
_@ t'r-g'ov&tSko||'a
?2 _@ et


+ 686
- 193
dictsource/it_list
File diff suppressed because it is too large
View File


+ 270
- 80
dictsource/it_listx
File diff suppressed because it is too large
View File


+ 535
- 487
dictsource/it_rules
File diff suppressed because it is too large
View File


+ 47
- 23
dictsource/pt_list View File

@@ -112,6 +112,11 @@ _( ,abRipa*'eINtezy
_) f,ES&pa*'eINtezy
_* &ste*'iskU
_− m'enUs
№ n'u~me*U
∞ iNfin'itU
∫ iNtegR'aU
⅓ u~Nt'e*@-sU
⅔ doIs#t'e*@-sUs#
¼ u~Nku'a*@-tU
½ m'eIU
¾ tRes#kw'a*@-tUs#
@@ -134,6 +139,7 @@ _\ b,ax&,iNvertS'id&
_] f,ES&kowS'etSi
_^ s,irku~Nfl'Eksu
_´ as'eINtu,ag'udU
· p'oNtUseINtR'adU
__ s,ublin^'adu
_` gR'avi
_{ ,abRiS'avi
@@ -163,34 +169,35 @@ _" 'abRi;'asp&||d'upl&s#
_2 d'oIs#
_3 tR'es#
?1 _4 kw'atru
?2 _4 kw'atRu
_5 s'iNku
?2 _4 kw'atRU
?1 _5 s'iNku
?2 _5 s'iNkU
_6 s'eIs#
?1 _7 s'Ety
?2 _7 s'EtSy
_8 'oItu
?1 _8 'oItu
?2 _8 'oItU
_9 n'Ovy
_10 d'Es#

_11 'oNzy
_12 d'ozy
?1_13 tr'ezy
?2_13 tR'ezi
?2_13 tR'ezy
?1_14 k&t'orzy
?2_14 kat'orzy
?2_14 kat'o*@-zy
_15 k'iNzy
?1_16 dyz&s'eis#
?2_16 d,ezes'eIs#
?1_17 dyz&s'Ety
?2_17 d,ezes'EtSy
?1_18 dyz'Oitu
?2_18 dez'oItu
?2_18 dez'oItU
?1_19 dyz&n'Ovy
?2_19 dezen'Ovy
?1_2X v'iNty
?2_2X v'iNtSy
_3X tR'iNt&

?1_4X kw&*'eNt&
?2_4X kwa*'eINt&
_5X siNkw'eINt&
@@ -211,20 +218,19 @@ _1C s'eINtu
?2_3C tRez'eINtUz
?1_5C kin^'eINtus#
?2_5C kin^'eINtUz
?1_6C seIs'eINtus#
?2_6C seIs'eINtUz
?1_0M1 m'il_
?2_0M1 m'iU_
?1_1M1 m'il_
?2_1M1 m'iU_

?1_0M2 milj'o~js#
?2_0M2 milj'o~jz
_0M2 milj'o~js#
_1M2 'u~milj'&U~
?1_0M3 bilj'o~js#
?2_0M3 bilj'o~jz
_0M3 bilj'o~js#
_1M3 'u~mbilj'&U~
?1_0M4 trilj'o~js#
?2_0M4 trilj'o~jz
_1M4 'u~ntrilj'&U~
_0M4 trilj'o~js#
_1M4 'u~ntRilj'&U~
_0and i
_dpt _v'irgul&
// _0Z2 seNt'Ezim& // 100ths
@@ -667,6 +673,7 @@ jamais $u+ $verbf

abordo $alt
aborto $alt $verb
abortos $alt2
absorta $alt2
acerto $alt2 $noun
acertos $alt2
@@ -734,7 +741,6 @@ bolo $alt $verb
borboleta $alt2
bordo $alt
borra $alt2 $noun
bosque $alt
boto $alt2 $noun
boxe $alt
bracelete $alt2
@@ -800,7 +806,7 @@ colosso $alt2
colossos $alt2
colostro $alt2
começo $alt $verb
comodo $alt2
concerto $alt2 $noun
concertos $alt2
concordo $alt
@@ -812,6 +818,8 @@ controle $alt2 $noun
controles $alt2
controles $alt $verb
controlo $alt2 $noun
conveses $alt
copta $alt
coreia $alt
cores $alt2
cores $alt $verb
@@ -886,6 +894,7 @@ emprego $alt2 $noun
encasqueta $alt
encosto $alt $verb
endereço $alt $verb
endoide $alt2
enforco $alt
engordo $alt
enredo $alt $verb
@@ -927,6 +936,7 @@ estrogonofe $alt
eta $alt2
europa $alt
europeia $alt
evangelho $alt
?2 ex es
exagero $alt $verb
exegeses $alt
@@ -1000,6 +1010,7 @@ inovo $alt
interesse $alt2
interesse $alt $verb
internet $alt
interregno $alt
iodo $alt2
ioga $alt
isolda $alt2
@@ -1105,6 +1116,7 @@ pior $alt
pipoco $alt2 $noun
plateia $alt
plebeia $alt
poderem $alt2
polca $alt
pompeia $alt
porcos $alt
@@ -1150,7 +1162,7 @@ remorso $alt
renovo $alt $verb
represa $alt2
retorno $alt $verb
reuva x'EUv&
reveses $alt
rigores $alt2
risoto $alt2
robson $alt
@@ -1185,6 +1197,7 @@ soco $alt2
soco $alt $verb
sogra $alt
sopa $alt2
sopeses $alt
sopro $alt2 $noun
sorvete $alt2
sossego $alt2 $noun
@@ -1241,6 +1254,7 @@ verde $alt2
vileta $alt2
vodca v'OdZik&
voga $alt
voice $alt
xarope $alt
xereta $alt2
xerox S'E*Oks
@@ -1268,6 +1282,7 @@ blind bl'aind
?2 Braille bR'aili
?1 cancel k'&ns'El
?1 caps k'aps
?2 cappuccino kaputS'inU
?2 center s'eNter
?1 com kom
?1 ctrl k'oNt:r,Ol
@@ -1311,8 +1326,9 @@ get gEt
happy x'Epy
?1 home 'omy
?2 home h'owmi
?1 hotmail h'Otm'eIl
?2 hotmail hotm'eIl
hot xOt
?1 hotmail h'Ot'eIl
?2 hotmail hOtm'eIl
?1 install ,inst'al
?2 Intranet iNtRan'Et
?1 kernel k'Ern,El
@@ -1327,7 +1343,8 @@ laptop lEpt'Op
?1 lock l'Ok
mail m'eIl
mails m'eIls
marketing m'arketSiN
?1 marketing m'arktiN
?2 marketing m'arketSiN
?2 master m'aste*@-
?2 mouse m'aUzi
?1 menu menu
@@ -1394,7 +1411,8 @@ apple 'Epow
outdoor aUtd'Or
?2 outdoors aUtd'Ors
baby b'eIby
chrome kR'owmi
?1 chrome kr'owm
?2 chrome kR'owmi
debian d'Ebj&~N
?1 excel ,Eks'El
?1 express ,Ekspr'Es
@@ -1460,6 +1478,7 @@ twitter tw'iter


// historical/famous person s
?2 Alzheimer aUz'aImEr
babbage b'abidZ
bernhard bern'ard
darwin d'Arwin
@@ -1478,13 +1497,16 @@ heidegger h'aIdege
hawking h'o:king
heisenberg h'aIzEnberg
hitler h'itler
?2 hobbes x'Obys
husserl x'usEl
isaac iz'&k
?1 isaac iz'&k
?2 isaac iz'ac
lavoisier lavwazj'e
leibniz l'aIbni:ts
locke lOk
montesquieu m,oNteskj'e
neumann n'OIman
newton n'i;utoN
newton n'I;utoN
oppenheimer _!'Op@nh,aImar
richard x'iS&rd
riemann r'i:man
@@ -1512,6 +1534,7 @@ klein kl'aIn // Very common on southern Brazil.
krueger kR'iZer
krüger kR'iZer
kühl k'il
?2 john dZIoN
?2 juan xu&~N
mueler m'iler
mueller m'iler
@@ -1519,6 +1542,7 @@ müler m'iler
müller m'iler
?1 nelson n'Els&N
ronchi r'OnCi:
Scarlet sk'a*@-let
valter v'aUter
vogel f'o:g@l
volkmann f'Olkman

+ 36
- 14
dictsource/pt_rules View File

@@ -352,17 +352,17 @@
êCC) e (C@ e
ôC) e (C@ e
áC) e (C@ e
áC) el (_ eU
?2 áC) el (_ eU
áCC) e (CA_ e
éCC) e (CA_ e
éCCC) e (C@ e
íC) el (_ eU
?2 íC) el (_ eU
íC) e (C@ e
íCC) e (C@ e
óC) e (C@ e
óCC) e (CA_ e
úC) e (C@ e
úC) el (_ eU
?2 úC) el (_ eU
ection (_ 'EkS&~N

//sort
@@ -422,11 +422,14 @@ _troux) e (L07_ E
_amanc) e (bL03_ E
qu) e (brL04_ E
cel) e (brL04_ E
_sop) e (sL04_ E
_C) e (bre_ E
_boch) e (chL04_ e
_ex) e (crL04_ E
impr) e (gnL04_ E
_enr) e (dL01_ E
_v) e (dL03_ E
_sob) e (rbL03_ e
_pr) e (dL03_ E
_arr) e (dL03_ E
_depr) e (dL03_ E
@@ -438,6 +441,7 @@ _enver) e (dL03_ E
_pel) e (gL03_ e
_n) e (grL03_ e
estr) ei (L04_ EI
_confed) e (rL04_ E
_r) e (jL03_ E
_inv) e (jL04_ E
_panfl) e (tL04_ e
@@ -451,7 +455,7 @@ _enver) e (dL03_ E
_dig) e (rL02_ E
_m) e (rL03_ E
_sev) e (rL03_ E
_reit) e (rL03_ E
_reit) e (rL04_ E
_sinc) e (rL03_ E
_g) e (rL04_ E
_z) e (rL04_ E
@@ -896,7 +900,7 @@ _pormen) o (L05_ O
_esn) o (bL04_ O
_engl) o (bL04_ O
_sal) o (brL03_ o
_) o (cL03_ o
_) o (cL03_ o
_barr) o (cL03_ o
_ch) o (chA_ o
_m) o (chA_ o
@@ -919,6 +923,7 @@ _f) o (dL01_s o
_arr) o (lhL03_ O
_enr) o (lhL03_ O
_) o (lhL04_ O
_) o (bstL04_ O
m) o (lhL04_ O
emb) o (lsL04_ O
_env) o (ltL03_ o
@@ -945,8 +950,7 @@ _f) o (dL01_s o
_Cach) o (rra_ o
@p) o (rtL03_ O // importo, etc.
a_c) o (rte_ o
ortos (_ O*@-t=Us# // tortos, mortos, etc.
_abs) o (rvL01_ o
_abs) o (rvL01_ o
t) o (rçL03_ o // con-
_c) o (sL01_ o
_desc) o (sL01_ o
@@ -954,15 +958,32 @@ _f) o (dL01_s o
_r) o (snL04_ O
_c) o (spL02_ O
enr) o (squL02_ O
emb) o (scL03_ O
b) o (squL02_ O
ossos (_ Os=Us# // nossos, grossos, etc.
p) ostos (_ Ost=Us# // dispostos etc.ortos (_ 'O*@-tUs
ossos (_A Os=Uz // nossos, grossos, etc.
?1 ossos (_G Os=UZ // nossos, grossos, etc.
?2 ossos (_G Os=Uz // nossos, grossos, etc.
p) ostos (_ Ost=Us# // dispostos etc.
p) ostos (_A Ost=Uz // dispostos etc.
?1 p) ostos (_G Ost=UZ // dispostos etc.
?2 p) ostos (_G Ost=Uz // dispostos etc.
ortos (_ 'O*@-tUs
ortos (_A 'O*@-tUz
?1 ortos (_G 'O*@-tUZ
?2 ortos (_G 'O*@-tUz
ovos (_ Ov=Us# novos, povos, etc.
ovos (_A Ov=Uz novos, povos, etc.
?1 ovos (_G Ov=UZ novos, povos, etc.
?2 ovos (_G Ov=Uz novos, povos, etc.
ortos (_ O*@-t=Us# // tortos, mortos, etc.
_Gar) o (tL03_ o
_escr) o (tL03_ o
zig) o (to_ o
_ch) o (vL01_ o
pr) o (vL03_ O
ovos (_ Ov=Us# novos, povos, etc.
_ortod) o (xL03_ O
_Com) o (do_ o
_ortod) o (xL03_ O
_g) o (zL04_ O
_alm) o (çL01_ O
_esb) o (çL01_ O
@@ -1029,8 +1050,8 @@ _ortod) o (xL03_ O
A) qu (idade_ kw
_a) qu (ífero_ kw
e) qu (estr kw
ese) qu (ív kw
_e) qu (in kw
_e) qu (in kw
exe) qu (AC kw
fre) qu (ent kw
?2 li) qu (id kw
?2 lí) qu (id kw
@@ -1100,11 +1121,11 @@ _ortod) o (xL03_ O
s (G z
s (w+ s
sr zx

_) sobre (@P5 sob*e
tran) s (A z
_trân) s (ito_ z
?1 ssion (_ _^_EN
_sub) s (ist z
?1 ssion (_ _^_EN


.group t
@@ -1236,6 +1257,7 @@ _lagarti) x (A S
_o) x (í ks
_pe) xo (to_ So
pi) x (A S
_pree) x (ist z
_pro) x (A S
_pra) x (A S
prA) x (i s // aproximado, aproximar, próximo, etc.

+ 2
- 0
dictsource/ta_list View File

@@ -506,6 +506,8 @@ tamil தமிழ் $text
திமு $alt
தாவா $alt
துருவா $alt
தண்டி $alt



// initial ட

+ 34
- 5
dictsource/ta_rules View File

@@ -284,6 +284,7 @@
_) க (ார்டியன g
_) க (ால்ஃப் g
_) கால்ப் ga:lf
_) க (ாவஸ்கர g
_) க (ிஃப்ட g
_) க (ிடாரிட g
_) க (ிடாரின g
@@ -301,7 +302,6 @@
_) கி (ரக g
_) கி (ரகண g
_) கி (ரணி ki
_) கி (ரண்_ ki
_) கி (ரந்த g
_) கி (ரய k
_) கி (ரவுண்ட g
@@ -589,7 +589,8 @@ _மன்மதக்) க (ுகை g
_) க (ோமுக g
_) க (ோமூத்திர g
_) க (ோயல g
_) க (ோர_ g
_) க (ோர_முக g
_) க (ோர_பாவ g
_) க (ோர_மாட்ட k
_) க (ோர_முடிய k
_) க (ோர_வேண்ட k
@@ -639,6 +640,9 @@ _மன்மதக்) க (ுகை g
_) க் (ளாஸ்_ g
_) க்வ (A kw
_) க் (வாலியர g
_) குல்ச (ார gulz
_) க (ுணரூப g
_) க (ுவாஹா g
//endsort

//sort
@@ -783,7 +787,6 @@ _தொன்ம) க (ால k
மோ) க (ினி H
_ம) க (ிமை H
எக்ஸ்) கி (யூஸ k
கி (ரண g
_ராஜ்) க (ிரண k
பொற்) கி (ரண g
ஐஸ்) கி (ரீம k
@@ -1159,6 +1162,7 @@ _தணிகா) ச (ல tSV
_கிரL06) ச (ார tS
_குணா) ச (ார tS
_பிரிவுப) ச (ார tS
_விகிதா) ச (ார tS
_விருந்துப) ச (ார tS
ராஜோப) ச (ார tS
ஆ) ச (ார_ tS
@@ -1429,6 +1433,7 @@ _வெனி) ச (ுவேல z
_ந) ச் (னு tS
_ரி) ச் (மண்ட tS
_கா) ச்மூச tSmu:tSV#
ஆ) ச (ாரப் tS
//endsort


@@ -2326,6 +2331,7 @@ _) தீர்க்க (_சுமங்கலி di:rggV
_) த (ோஹா d
_) தௌலதாப (ாத daUlVd.a:b
_) த (்ராட்சை d
_) துர்க் (மேனிஸ்தான turk
//endsort

//sort
@@ -2461,6 +2467,7 @@ _சிறை) த்த (ண்டனை ddV
பு) த்த (ன ddV
_நர்) த்த (ன ddV
_குறும்பு) த்த (ன ttV
_சகிப்பு) த்த (ன ttV
_ஜனார்) த்த (ன ddV
_பரிவர்) த்த (ன ddV
_வர்) த்த (மான ddV
@@ -2480,6 +2487,7 @@ _பரிவர்) த்த (ன ddV
எட்டு) த்த (ிக்க dd
_ம) த்த (ிக்கு dd
L03) த்த (ிசை dd
_கீழ்) த்த (ிசை dd
_மன) த்த (ிட dd
L03) த்த (ின dd
சில) த்த (ினங் dd
@@ -2696,6 +2704,7 @@ _சி) த்ரலேக (ா trVle:k
_) ப (ட்டன bV
_) ப (ட்டன_ pV
_) ப (ட்டனப்பாக்க pV
_) ப (ட்டனர்_ pV
_) ப (ட்டாசாரி bV
_) ப (ட்டாச்சாரி bV
_) ப (ண்டாரி bV
@@ -2937,6 +2946,7 @@ _டெட்_) ப (ாடி b
_) ப (ாடி_பில்டிங் b
_) ப (ாடிக்கு b
_) ப (ாடியை b
_) பாட (ிஸ்டா ba:t.
_) ப (ாட்டனிய b
_) பா (ட்டரி be:
_) ப (ாட்டலியன b
@@ -3523,6 +3533,7 @@ _பெனசீர்_) ப (ுட்டோ b
_) புத்த (ம்_புதிய puttV
_) புத்த (ம்_புது puttV
_) புத்த (ரிசி puttV
_) புத்த (றிவ puttV
_) புத்த (ள puttV
_) புத்த (ழக puttV
_) ப (ுத்திக் b
@@ -3552,7 +3563,6 @@ _பெனசீர்_) ப (ுட்டோ b
_) புல்க (ான pulg
_) ப (ுல்டோசர b
_) ப (ுல்லட் b
_) ப (ுல்லா_ f
_) ப (ுல்லாக்க b
_) புல்லெட் bullet.
_) பு (ளுடோனிய p
@@ -3851,15 +3861,22 @@ _பெனசீர்_) ப (ுட்டோ b
_) ப் (ளூஸ b
_) ப் (ளோரிடா f
_) ப் (ளௌஸ b
_) பலாப்ப (ல bVla:bbV
_) பலபத்த (ிர bVlVbVdd
_) ப (ாரவண்டி b
_) ப (லம்தான bV
_) ப (ந்தபாச bV
//endsort

//sort
_சு) ப்ப bbV#
_பீர்) ப (ால் b
_குங்) ப fV#
_நீர்) ப pV#
_ப்ரூ) ப fV#
இடர்) ப pV#
நடை) ப pV#
_கேம்) ப pV#
_செல்) ப fV#
_பிரதீ) ப pV#
அஷ்ர) ப fV#
ஒலிம்) ப pV#
@@ -3913,12 +3930,15 @@ _தொடர்) ப (ங்க pV
_தா) ப (ங்கொ bV
_த) ப (ச bV
_வெண்) ப (ஞ்ச pV
ப (ட pV
க) ப (ட bV
கரம்) ப (ட pV
ம்) ப (ட bV
_பயண்) ப (ட bV
ப (டி pV
மறு) ப (டி bV
_சாகு) ப (டி bV
_குளறு) ப (டி bV
_தள்ளு) ப (டி bV
@) ப (ட்ச+ pV
ஆரிய) ப (ட்டா bV
@@ -4136,6 +4156,7 @@ _முரண்) ப (ாட p
_சிறு) ப (ாதை p
_நேர்) ப (ாதை p
ஜிந்தா) ப (ாத் b
_கதா) ப (ாத்திர p
_பஞ்ச) ப (ாத்திர p
அ) ப (ான p
ச) பாபதி ba:pVti
@@ -4162,6 +4183,7 @@ _டி) பார்ட்மெண்ட pa:rt.men.t.V#
அ) பார்மெண்ட pa:rment.V#
கண்) ப (ார்வை p
_வால்) ப (ாறை p
_த) ப (ால b
இம்) ப (ால f
இரு) ப (ால p
ஒரு) ப (ால p
@@ -4174,6 +4196,7 @@ _ப்ரின்சி) ப (ால p
_சிவ) ப (ாலன b
_கம்) ப (ாலா p
_கா) ப (ாலி b
_தொடர்) ப (ால் b
ப (ால்_ p
_தன) ப (ால்_ b
_பண்) ப (ால்_ b
@@ -4204,6 +4227,7 @@ _தமிழ்ப்) ப (ாஷ _b
_ஜுல்) ப (ி f
_மெய்) ப (ி p
_ஹம்) ப (ி p
_செல்) ப (ி f
_பொய்) ப (ி p
_யுஎஸ்) ப (ி b
_தியோச) ப (ி f
@@ -4318,6 +4342,7 @@ _ஷண்முக) பி (ரிய p
பெண்) ப (ிள்ளை p
அச்சா) ப (ீ f
_தபாலா) ப (ீ f
ஆ) ப (ீL04 f
_ர) பீக் fi:k
உப) ப (ீட p
விக்கி) ப (ீடியா p
@@ -4346,6 +4371,7 @@ _வெண்) ப (ுகை p
_துன்) ப (ுற b
_நம்) ப (ுற b
ஊம்) ப (ுற b
_நிரம்) ப (ுற b
_மார்) ப (ுற b
_கிளம்) ப (ுற b
_திரும்) ப (ுற b
@@ -4501,6 +4527,7 @@ _விலை) ப (ோ p
_போ) ப் p
_லாக) ப் p
ஆசி) ப் f
_செல்) ப் f
_டெஸ்க்டா) ப் p
_லை) ப் (_ f
ஆ) ப் (கன f
@@ -4752,6 +4779,8 @@ _தென்னா) ப் (ரிக்க f

_மக்க) ள்த (ொகை t.t
உ) ள் (துறை t.
_திங்க) ள் (கிழமை t.
உ) ள் (பட t.


.group ழ

+ 14
- 0
dictsource/te_list View File

@@ -78,6 +78,20 @@ _0M3x kotlu
_1M3 koti
_dpt _d,aS;a:mkam

_#వ av#a // ordinal suffix, drop the final vowel from the cardinal number
_20o irav#aIj
_30o muppaIj
_40o nalub#aIj
_50o ja:b#aIj
_60o arav#aIj
_70o d.#eb#baIj
_80o jenab#aIj
_90o tomb#aIj
_0Co v#andal
_1Co v#and
_0M1o v#el
_1M1o v#ejj
_0M2o laks.al

// symbols
_?? aks.aram // 'unknown character'

+ 94
- 0
dictsource/ur_list View File

@@ -192,6 +192,7 @@ _dpt _ISaRI'Ia_
انہوں ,UnH'o:n $u
انہیں ,UnH'e:n $u
انھیں ,UnH'e:n $u
جنہوں J,InH'o:n $u

// unstressed prepositions
کا $u
@@ -674,3 +675,96 @@ _dpt _ISaRI'Ia_
مانند ma:n'Ind $1
اتار Ut'a:R
آرکائیو ,a:Rk'a:jv
کیلئے ke:l'i:;e:
طرح t,aR'aH
اگر ag'aR
ٹیم t.'i:m
اوپر u:p'aR $1
کر k'aR $u
لیا l'i:;a: $u
کئے k'i:;e:
ضرورت z,aRu:R'at
مگر mag'aR
بنا ban'a:
بنی ban'i:
بنے ban'e:
بتا bat'a:
بتی bat'i:
پتا pat'a:
پتی pat'i:
پتے pat'e:
دیگر dig'aR
فیصد fis.'ad
جنرل J,anR'al
ترقی taR'aqi
سید s,ai;'ad
اجلاس ,IJl'a:s
باہر ba:H'aR
حضرت H,azR'at
تاکہ ta:k'e:H $u
یعنی ja:n'i: $1
ناظم n'a:z.Im
حل H'al
دیئے d'i:;e:
تحت t'EHEt
لیگ l'i:g
علم 'Ilm
قانون qa:n'u:n $1
ثابت s'a:bIt
ضلع z'Ila:
خطاب xIt'a:b
اندر 'andaR
طلب tal'ab
لہذا lIH'a:Da:
متاثرہ mUt'a:sIRa
نقصان n,Uqs.'a:n
وغیرہ v'aQERa
صورتحال s.,u:Rate:H'a:l
کھلاڑی k#Il'a:r.i
پروفیسر pRo:fe:s'aR
علاج Il'a:J
برس baR'as
کارکردگی k,a:Rk'aRd@g,i:
ہمیشہ Ham'e:S,a
ملاقات m,Ula:q'a:t
شائع S'a:ja:
ساحل s'a:HIl
یونیورسٹی j'u:njvaRsIt.,i:
انضمام ,InzIm'a:m
خدا x'Uda:
محنت m,EHn'at
مرکزی m,aRk'azi
اجازت ,IJa:z'at
مقدار m,Iqd'a:R
تعاون t'a:vUn
سن s'Un
خدمات x,Idm'a:t
شاید Sa:j'ad
اخر 'a:xIR
ورلڈ v'aRld.
خدمت x,Idm'at
کن k'In
شاہد S'a:HId
صنعت s.an'at
وکٹ v'IkIt.
دودھ d'u:d#
تربیت t,aRbi;'at
تصور tas.'avUR
چنانچہ cUn'a:nce:H
واقعات v,a:qe:'a:t
معیشت m,a:iS'at
ذہن D'EHEn
گورنمنٹ gav'aRnmInt.
فرق f'aRq
حیات H,ai;'a:t
طالب t'a:lIb
حضور HUz'u:R
نور n'u:R
ذریعہ DaR'i:;a:
مقصد m,aqs.'ad
معاونت m,Oa:vIn'at
خاتون xa:t'u:n
اطلاع 'Itl,a:
اطلاعات ,Itl'a:t
سنہ s'an
دسٹرکٹ d.'Ist.RIkt.

+ 30
- 1
dictsource/ur_rules View File

@@ -57,7 +57,7 @@
ا a:
_) ا (L01 // Acts like Consonants if followed by a vowel but is silent.
_) ا a
_) او u:
_) او o:
_) ای e:
ائ (L02 a:I
اہ(_ a:H
@@ -119,6 +119,10 @@ _) ای e:
_) اح (L02 'EH
_) است (L02 ,IstI
_) ارت (L02 ,IRtI
_) ایس (L01 'Es
_) اونچ (L01 'u:nc
_) ادا (ر 'Ida:
اسکول ,Isk'u:l

.group آ
آ a:
@@ -137,6 +141,11 @@ _) ای e:
_) عمر 'UmR
L02) عی (_ 'ai:
علیحد 'alEHd
عَ 'a
عِ 'I
عُ 'U
علاق Il'a:q
عے e:

.group و
و o:
@@ -211,6 +220,8 @@ _) ای e:
بوڑھ b'u:r.h
_) بے (P2 b'e:
بحران b,OHR'a:n
بنیاد bUnj'a:d
بیمار bim'a:R


.group پ
@@ -285,6 +296,7 @@ _) ای e:
_) جمل J'Uml
_) جہ (L02 J'EH
_) جدا J'Uda:
_) جسم J'Ism

.group چ
چ cV
@@ -321,6 +333,8 @@ _) ای e:
_) خود x'Ud
_) خواہش xv'a:HIS
_) خیا x'aja:
_) خون x'u:n
_) خشک x'USk


.group د
@@ -341,6 +355,9 @@ _) ای e:
دلچسپ d,Ilc'asp
دھیم d#'i:m
_) دوسر d'u:sR
_) دین (L01 d'e:n
_) دیت (L01 d'e:t
دہ (_ d,a

.group ڈ
ڈ d.V
@@ -374,6 +391,7 @@ _) ای e:
_) رکن R'Ukn
@) ر (د R
_) رفت R'af@t
_) روا R'ava:

.group ڑ
ڑ r.V
@@ -420,6 +438,8 @@ _) ای e:
سرگرم s,aRg'aRm
@) ستان (_ Ist'a:n
@) ستانی (_ Ist'a:ni
_) سوا sav'a:
_) سکول sk'u:l

.group ش
ش SV
@@ -441,12 +461,14 @@ _) ای e:
صّ ssV
صّ (L01 ss
صوب s.'u:b
صورت s.u:R'at

.group ض
ض zV
ض (L01 z
ضّ zzv
ضّ (L01 zz
ضرور zaR'u:R

.group ط
ط tV
@@ -467,6 +489,7 @@ _) ای e:
غ (L01 Q
غّ QQV
غّ (L01 QQ
غلام QUl'a:m

.group ف
ف fV
@@ -498,6 +521,8 @@ _) ای e:
کوشش k'o:SIS
_) کہ (L02 k'EH
کارکن k'a:Rk,UUn
_) کیس (L01 k'Es
_) کت (L01 k'Ut

.group گ
گ gV
@@ -524,6 +549,8 @@ _) ای e:
لّ (L01 ll
لکھ l'Ik#
_) لہ (L02 l'EH
_) لین (L01 l'e:n
_) لیت (L01 l'e:t

.group م
م mV
@@ -563,6 +590,8 @@ _) ای e:
مخبر m'Uxb,IR
ملحق m'UlH,Iq
مذہب m,aDH'ab
متاثر mUt'a:sIR
_) مثال mIs'a:l

.group ن
ن nV

+ 4
- 3
espeak-data/voices/asia/fa View File

@@ -1,3 +1,4 @@
name persian
language fa
name persian
language fa
dictdialect en-us

+ 3
- 0
espeak-data/voices/asia/gu View File

@@ -0,0 +1,3 @@
name gujarati-test
language gu


+ 5
- 0
espeak-data/voices/asia/te View File

@@ -0,0 +1,5 @@
name telugu-test
language te

intonation 2
//consonants 80

+ 1
- 1
espeak-data/voices/other/en-sc View File

@@ -13,4 +13,4 @@ replace 03 I2 i
replace 01 aI aI2
replace 02 a a/
replace 02 u: U
replace 02 3: VR
//replace 02 3: VR

+ 518
- 0
phsource/ph_arabic View File

@@ -0,0 +1,518 @@
// short vowels
phoneme a
vowel starttype #a endtype #a
unstressed
length 180
CALL ShortVowelLength
IF prevPh(s[) OR prevPh(d[) OR prevPh(t[) OR prevPh(Z) THEN
FMT(vowel/0_3)
ELSE
FMT(vowel/a#)
ENDIF
endphoneme


phoneme i
vowel starttype #i endtype #i
length 140
unstressed
CALL ShortVowelLength
FMT(vowel/i)
endphoneme

phoneme u
vowel starttype #u endtype #u
unstressed
length 140
CALL ShortVowelLength
FMT(vowel/u)
endphoneme



phoneme : // lengthen previous vowel by "length"
virtual
length 200
endphoneme




// long vowels
phoneme a:
vowel starttype #a endtype #a
length 300
//CALL LongVowelLength
IF prevPh(s[) OR prevPh(d[) OR prevPh(t[) OR prevPh(Z) THEN
FMT(vowel/0_3)
ELSE
FMT(vowel/a#)
ENDIF
endphoneme


phoneme i:
vowel starttype #i endtype #i
length 300
//CALL LongVowelLength
FMT(vowel/i)
endphoneme

phoneme u:
vowel starttype #u endtype #u
length 300
//CALL LongVowelLength
FMT(vowel/u)
endphoneme


// Redifine consnant for arabic




phoneme l
liquid
lengthmod 7

IF nextPh(isNotVowel) THEN
ChangePhoneme(l/)
ENDIF

IF nextPh(isNotVowel) THEN
// in case the next phoneme is no longer a vowel, in pass=2
PrevVowelEndings
VowelEnding(l/L1_@L, -60)
VowelEnding(l/L1_aL, -40)
VowelEnding(l/L1_eL, -30)
VowelEnding(l/L1_iL, -30)
VowelEnding(l/L1_oL, -40)
VowelEnding(l/L1_uL, -40)
EndSwitch

FMT(l/l_)
RETURN
ENDIF

CALL vowelstart_l

IF prevPh(#@) THEN
VowelEnding(l/xl, -50)
ELIF prevPh(isVowel) THEN
VowelEnding(l/xl, -40)
ENDIF

IF prevPh(isPause) THEN
FMT(l/_l)
ENDIF

IF prevPh(t) THEN
FMT(l/tl)
ENDIF

IF prevPh(l/) THEN
FMT(l/l_long) // double l, make it longer
ENDIF

FMT(l/l)
endphoneme





phoneme w
liquid
lengthmod 7
FMT(w/w_)
endphoneme



phoneme j
liquid palatal
lengthmod 7
FMT(j/j_)
endphoneme



//*******************************************************************
// NASAL CONSONANTS
//*******************************************************************


phoneme m
vcd blb nasal
Vowelout f1=2 f2=1000 -500 -350 f3=-200 80 brk
lengthmod 4
FMT(m/m_)
endphoneme


phoneme n
vcd alv nasal
Vowelout f1=2 f2=1700 -300 250 f3=-100 80 rms=20 brk
lengthmod 4
FMT(n/n_)
endphoneme


//*******************************************************************
// VOICED STOPS
//*******************************************************************


phoneme b
vcd blb stop
voicingswitch p
Vowelout f1=2 f2=1000 -500 -300 f3=-300 80 brk
lengthmod 7
FMT(b/b) addWav(x/b)
endphoneme


phoneme d
vcd alv stop
voicingswitch t
lengthmod 5
Vowelin f1=1 f2=1700 -300 300 f3=-100 80
Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk

FMT(d/d) addWav(x/d)
endphoneme


phoneme d[
vcd dnt stop
voicingswitch t[
lengthmod 5
Vowelin f1=2 f2=1500 -300 300 f3=-150 80
Vowelout f1=2 f2=1500 -300 300 f3=-150 80
FMT(d/d) addWav(x/d_dnt, 100)
endphoneme


phoneme dZ
vcd pla afr sibilant
voicingswitch tS
//lengthmod 8
Vowelin f1=2 f2=2300 200 400 f3=100 80
Vowelout f1=2 f2=2300 250 300 f3=100 80 brk

FMT(dzh/dzh) addWav(x/dzh)
endphoneme



phoneme J
vcd pal afr sibilant palatal
voicingswitch c
lengthmod 5
Vowelin f1=2 f2=2700 400 600 f3=300 80 rate len=70
Vowelout f1=2 f2=2700 400 600 f3=300 80 colr=1

IF KlattSynth THEN
IF nextPh(isPause2) THEN
FMT(klatt/dz_pzd_) addWav(x/dzh, 35)
ENDIF
FMT(klatt/dz_pzd) addWav(x/dzh, 45)
ENDIF

FMT(dzh/dz_pzd) addWav(x/dzh, 45)
endphoneme


phoneme g
vcd vel stop
voicingswitch k
lengthmod 5
Vowelin f1=2 f2=2300 200 300 f3=-300 80
Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk

FMT(g/g) addWav(x/g2, 150)
endphoneme

//*******************************************************************
// VOICED fricatives
//*******************************************************************

phoneme D
vcd dnt frc
voicingswitch T
lengthmod 6
Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50

IF KlattSynth THEN
Vowelin f1=0 f2=1290 -300 300 f3=0 0
ENDIF
FMT(voc/dh) addWav(vocw/dh)
endphoneme


phoneme z
vcd alv frc sibilant
//voicingswitch s
lengthmod 1
Vowelout f1=0 f2=1700 -300 300 f3=-100 60 len=50

IF KlattSynth THEN
Vowelin f1=0 f2=1390 -300 300 f3=0 0
Vowelout f1=1 f2=1390 -300 300 f3=-100 60 len=50 brk
ENDIF

FMT(voc/z) addWav(ufric/s_, 85)
endphoneme


phoneme Z
vcd pla frc sibilant
voicingswitch S
lengthmod 6
Vowelin f1=0 f2=2000 0 300 f3=-200 80
Vowelout f1=2 f2=2000 0 300 f3=-200 80 brk

IF KlattSynth THEN
IF nextPh(isPause2) THEN
FMT(klatt/zh_) addWav(vocw/zh)
ENDIF
FMT(klatt/zh) addWav(vocw/zh, 130)
ENDIF

FMT(voc/zh) addWav(vocw/zh, 130)
endphoneme





//*******************************************************************
// UNVOICED STOPS
//*******************************************************************

phoneme t
vls alv stop
voicingswitch d
lengthmod 2
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
WAV(ustop/t, 90)
endphoneme


phoneme t[ // dental variant of /t/
vls dnt stop
voicingswitch d[
lengthmod 2
Vowelin f1=1 f2=1500 -250 250 f3=-100 80 amp=16
Vowelout f1=0 f2=1500 -300 250 f3=-100 80 rms=20

WAV(ustop/t_dnt, 35)
endphoneme




phoneme k
vls vel stop
voicingswitch g
lengthmod 2
Vowelin f1=0 f2=2300 200 300 f3=-200 80
Vowelout f1=0 f2=2300 300 400 f3=-200 80 rms=20

IF KlattSynth THEN
Vowelout f1=0 f2=2300 200 300 f3=-200 80 rms=20
ENDIF

WAV(ustop/k)
endphoneme


phoneme q
vls uvl stop
lengthmod 2
Vowelin f1=1 f2=1700 0 200 f3=-300 80 gpaus f4 rms=30
Vowelout f1=1 f2=1700 -100 200 f3=-300 80 f4 rms=35
WAV(ustop/q, 48)
endphoneme



//*******************************************************************
// UNVOICED fricatives
//*******************************************************************

phoneme f
vls lbd frc
voicingswitch v
lengthmod 3
Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
WAV(ufric/f)
endphoneme


phoneme T
vls dnt frc
voicingswitch D
lengthmod 3
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
WAV(ufric/th)
endphoneme


phoneme s
vls alv frc sibilant
voicingswitch z
lengthmod 3
Vowelin f1=0 f2=1700 -300 300 f3=-100 80
Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20
WAV(ufric/s)
endphoneme


phoneme S
vls pla frc sibilant
voicingswitch Z
lengthmod 3
Vowelin f1=0 f2=2100 100 300 f3=-100 80
Vowelout f1=0 f2=2100 100 300 f3=-100 80

WAV(ufric/sh)
endphoneme






phoneme x
vls vel frc
voicingswitch Q
lengthmod 3
Vowelin f1=0 f2=2300 200 400 f3=-100 80
Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
//WAV(ufric/x)
WAV(vwl_ar/kha)
endphoneme



phoneme h
vls glt apr
lengthmod 3
ipa h
WAV(h/h_, 70) // no vowel following
endphoneme








// Added specific consnant to arabic
phoneme H // arabic Hah
vls phr frc
ipa U+0127
lengthmod 5
WAV(vwl_ar/H2)
endphoneme

phoneme Z // arabic ZAH .Todo
vls phr frc
lengthmod 5
voicingswitch z
WAV(vwl_ar/ZH4)
endphoneme

phoneme E // arabic Ain
vls phr frc
//ipa U+0127
//voicingswitch a
lengthmod 5
//WAV(vwl_ar/AN2,50)
WAV(vwl_ar/ain2)

endphoneme

phoneme G //arabic Ghain
//vcd uvl frc
vls uvl frc
lengthmod 3
Vowelin f1=0 f2=2300 200 400 f3=-100 80
Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
voicingswitch R
//lengthmod 5
//ipa U+0280
WAV(vwl_ar/ghain6)
//FMT(voc/Q_ulv) addWav(vwl_ar/gh, 100)
//FMT(voc/Q_ulv) addWav(vwl_ar/ghain3, 100)
endphoneme

phoneme d[ //arabic Dhad
vls dnt stop
voicingswitch d
length 120
WAV(vwl_ar/da7)
endphoneme

phoneme s[
vls dnt stop
//voicingswitch s
lengthmod 7
WAV(vwl_ar/SA1)
endphoneme



phoneme r
liquid rhotic
ipa ?
lengthmod 7
IF nextPh(a) OR nextPh(a:) THEN
FMT(r/ra)
ENDIF
FMT(r/r_)
endphoneme

procedure ShortVowelLength

//IF prevPhW(isVoiced) AND nextPhW(isVoiced) THEN // voiced
IF prevPhW(isNotVowel) AND nextPhW(isNotVowel) THEN // consonants
length 140
RETURN
//ENDIF
ELSE
IF prevPh(isStressed) THEN
length 160
ELSE
length 175
ENDIF
ENDIF
endprocedure
procedure LongVowelLength

//IF prevPhW(isVoiced) AND nextPhW(isVoiced) THEN // voiced
IF nextPhW(:) THEN
length 300
RETURN
//ENDIF
ELIF prevPhW(isNotVowel) AND nextPhW(isNotVowel) THEN // consonants
length 340
RETURN
//ENDIF
ELSE
IF prevPh(isStressed) THEN
length 360
ELSE
length 375
ENDIF
ENDIF
endprocedure

+ 2
- 2
phsource/ph_armenian View File

@@ -94,8 +94,8 @@ endphoneme


phoneme k#
// import_phoneme consonants/kh
import_phoneme base/k
import_phoneme consonants/kh
// import_phoneme base/k
endphoneme



+ 12
- 2
phsource/ph_basque View File

@@ -16,9 +16,9 @@ phoneme a2 // delete if the next vowel is 'a'. Used for numbers.

IF nextPh(#a) THEN
ChangePhoneme(NULL) // merge consecutive 'a'
ELSE
ChangePhoneme(a)
ENDIF

FMT(vowel/a_4)
endphoneme


@@ -174,3 +174,13 @@ phoneme g
import_phoneme es/g
endphoneme

phoneme n
vcd alv nasal
lengthmod 4

IF prevPhW(i) AND nextPhW(isVowel) THEN
ChangePhoneme(n^)
ENDIF
CALL base/n
endphoneme

+ 16
- 0
phsource/ph_english View File

@@ -223,6 +223,14 @@ phoneme E# // [@] in unstressed syllables, if next vowel is stressed
endphoneme


phoneme E2 // does not reduce in unstressed syllables
vowel starttype #e endtype #e
length 140
ChangePhoneme(E) // a second change ([E] to [I2]) won't happen
endphoneme



phoneme I
vowel starttype #i endtype #i
length 130
@@ -328,6 +336,14 @@ phoneme A@ // Used for [A:] when followed by 'r'
endphoneme


phoneme A# // [a] in British [A:] in American
vowel starttype #a endtype #a
ChangePhoneme(a)
endphoneme




phoneme 3:
vowel starttype #@ endtype #@
length 210

+ 6
- 0
phsource/ph_english_us View File

@@ -169,6 +169,12 @@ phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in Ameri
endphoneme


phoneme A# // [a] in British [A:] in American
vowel starttype #a endtype #a
ChangePhoneme(A:)
endphoneme


phoneme 3:
vowel starttype #@ endtype #@
length 240

+ 20
- 3
phsource/ph_german View File

@@ -316,7 +316,7 @@ endphoneme


phoneme r
vcd alv flp rhotic
liquid alv rhotic
lengthmod 6

IF prevPhW(@-) THEN
@@ -325,7 +325,10 @@ phoneme r
IF prevPhW(isVowel) THEN
ChangePhoneme(R)
ELSE
IF prevPhW(t) THEN
IF prevPhW(t) OR prevPhW(p) OR prevPhW(k) THEN
PauseBefore 40
ELSEIF prevPhW(d) OR prevPhW(b) OR prevPhW(g) THEN
PauseBefore 15
ELSE
InsertPhoneme(@-)
ENDIF
@@ -393,7 +396,21 @@ phoneme d
IF nextPh(l2) THEN
ChangePhoneme(t)
ENDIF
CALL base/d
lengthmod 5
Vowelin f1=1 f2=1700 -300 300 f3=-100 80
Vowelout f1=2 f2=1700 -300 300 f3=-100 80 brk

IF PreVoicing THEN
FMT(d/xd)
ENDIF

IF nextPh(isPause2) THEN
FMT(d/d_) addWav(x/d_)
ELIF nextPh(r) THEN
FMT(d/dr) addWav(x/d)
ENDIF

FMT(d/d) addWav(x/d)
endphoneme

phoneme g

+ 17
- 5
phsource/ph_hindi View File

@@ -146,10 +146,10 @@ endphoneme
phoneme a:
vowel long starttype #a endtype #a
length 200
IF nextPhW(j) THEN
// IF nextPhW(j) THEN
FMT(vowel/a_5)
ENDIF
FMT(vowel/aa_9)
// ENDIF
// FMT(vowel/aa_9)
endphoneme

phoneme a
@@ -547,8 +547,20 @@ phoneme r
CALL base/r/
ELSE
IF prevPhW(isVowel) THEN
IF nextPhW(isNotVowel) OR nextPhW(V) THEN
ChangePhoneme(*)
IF nextPhW(isNotVowel) THEN
IF nextPhW(isUStop) OR nextPhW(isVStop) THEN
ChangePhoneme(*)
ENDIF
ENDIF

IF nextPhW(V) THEN // [V] may be removed by ChangePhoneme(NULL)
IF next2PhW(isUStop) OR next2PhW(isVStop) THEN
ChangePhoneme(*)
ENDIF
ELSE
IF nextPhW(isVowel) THEN
ChangePhoneme(*)
ENDIF
ENDIF
ENDIF

+ 2
- 2
phsource/ph_italian View File

@@ -151,7 +151,8 @@ endphoneme

phoneme ts
import_phoneme consonants/ts
voicingswitch ts
voicingswitch s
lengthmod 4
endphoneme

phoneme dz
@@ -159,4 +160,3 @@ phoneme dz
voicingswitch z
lengthmod 3
endphoneme


+ 7
- 6
phsource/phonemes View File

@@ -1810,6 +1810,10 @@ include ph_catalan
phonemetable an es
include ph_aragon

phonemetable eu base2
include ph_basque


phonemetable pt base2
include ph_pt_brazil

@@ -1877,6 +1881,9 @@ include ph_georgian
phonemetable fa base
include ph_farsi

phonemetable ar base
include ph_arabic


//**************************************************************************************
// The following lines are experimental, for future additions.
@@ -1889,9 +1896,6 @@ include ph_kinyarwanda
//phonemetable mr hi
//include ph_marathi

//phonemetable eu base2
//include ph_basque

//phonemetable mn base
//include ph_mongolian

@@ -1967,9 +1971,6 @@ include ph_korean
phonemetable kl base
include ph_greenlandic

phonemetable eu base2
include ph_basque


//phonemetable en2 en
//include ph_english_test

+ 5
- 5
src/Makefile View File

@@ -93,13 +93,13 @@ SRCS3 = espeak.cpp
OBJS3=$(patsubst %.cpp,%.o,$(SRCS3))
LIBS3=-lstdc++ -L . -lespeak

CXXFLAGS=-O2
CXXFLAGS?=-O2
CXXFLAGS+=-fno-exceptions -pedantic -Wall

all: $(BIN_NAME) $(LIB_NAME) $(STATIC_LIB_NAME) $(BIN2_NAME)

.cpp.o:
$(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c -fno-exceptions $<
$(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -I. -c $<

$(BIN_NAME): $(OBJS1)
$(CXX) $(LDFLAGS) -o $@ $(OBJS1) $(LIBS1)
@@ -110,8 +110,8 @@ $(BIN2_NAME): $(OBJS3) $(LIB_NAME)


x_%.o: %.cpp
$(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -fpic -fvisibility=hidden -pedantic \
-I. -D LIBRARY -c -fno-exceptions $< -o x_$*.o
$(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -fpic -fvisibility=hidden \
-I. -D LIBRARY -c $< -o x_$*.o

$(LIB_NAME): $(OBJS2)
$(CXX) $(LDFLAGS) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ \

+ 5
- 0
src/compiledata.cpp View File

@@ -121,6 +121,7 @@ static keywtab_t k_properties[] = {
{"isNasal", 0, phNASAL},
{"isLiquid", 0, phLIQUID},
{"isUStop", 0, phSTOP},
{"isVStop", 0, phVSTOP},
{"isVFricative", 0, phVFRICATIVE},

{"isPalatal", 0, i_isPalatal},
@@ -3498,6 +3499,10 @@ static void CompilePhonemeFiles()
strncpy0(current_fname,item_string,sizeof(current_fname));
linenum = 1;
}
else
{
error("Missing file: %s", item_string);
}
break;

case kPHONEMETABLE:

+ 1
- 0
src/compiledict.cpp View File

@@ -96,6 +96,7 @@ MNEM_TAB mnem_flags[] = {
{"$strend", 9}, // full stress if at end of clause
{"$strend2", 10}, // full stress if at end of clause, or only followed by unstressed
{"$unstressend",11}, // reduce stress at end of clause
{"$accent_before",12}, // used with accent names, say this accent name before the letter name
{"$abbrev", 13}, // use this pronuciation rather than split into letters

// language specific

+ 10
- 5
src/dictionary.cpp View File

@@ -3583,8 +3583,10 @@ int LookupDictList(Translator *tr, char **wordptr, char *ph_out, unsigned int *f
extern char word_phonemes[N_WORD_PHONEMES]; // a word translated into phoneme codes

int Lookup(Translator *tr, const char *word, char *ph_out)
{//===================================================
int found;
{//=========================================================
// Look up in *_list, returns dictionary flags[0] and phonemes

int flags0;
unsigned int flags[2];
int say_as;
char *word1 = (char *)word;
@@ -3592,7 +3594,10 @@ int Lookup(Translator *tr, const char *word, char *ph_out)

flags[0] = 0;
flags[1] = FLAG_LOOKUP_SYMBOL;
found = LookupDictList(tr, &word1, ph_out, flags, FLAG_ALLOW_TEXTMODE, NULL);
if((flags0 = LookupDictList(tr, &word1, ph_out, flags, FLAG_ALLOW_TEXTMODE, NULL)) != 0)
{
flags0 = flags[0];
}

if(flags[0] & FLAG_TEXTMODE)
{
@@ -3600,11 +3605,11 @@ int Lookup(Translator *tr, const char *word, char *ph_out)
option_sayas = 0; // don't speak replacement word as letter names
text[0] = 0;
strncpy0(&text[1], word1, sizeof(text));
found = TranslateWord(tr, &text[1], 0, NULL, NULL);
flags0 = TranslateWord(tr, &text[1], 0, NULL, NULL);
strcpy(ph_out, word_phonemes);
option_sayas = say_as;
}
return(found);
return(flags0);
}



+ 21
- 9
src/numbers.cpp View File

@@ -73,15 +73,15 @@ static int number_control;

typedef struct {
const char *name;
int flags;
int accent_flags; // bit 0, say before the letter name
} ACCENTS;

// these are tokens to look up in the *_list file.
static ACCENTS accents_tab[] = {
{"_lig", 1},
{"_smc", 1}, // smallcap
{"_tur", 1}, // turned
{"_rev", 1}, // reversed
{"_smc", 0}, // smallcap
{"_tur", 0}, // turned
{"_rev", 0}, // reversed
{"_crl", 0}, // curl

{"_acu", 0}, // acute
@@ -419,6 +419,7 @@ void LookupAccentedLetter(Translator *tr, unsigned int letter, char *ph_buf)
int accent_data = 0;
int accent1 = 0;
int accent2 = 0;
int flags1, flags2;
int basic_letter;
int letter2=0;
char ph_letter1[30];
@@ -456,19 +457,19 @@ void LookupAccentedLetter(Translator *tr, unsigned int letter, char *ph_buf)
}


if(Lookup(tr, accents_tab[accent1].name, ph_accent1) != 0)
if((flags1 = Lookup(tr, accents_tab[accent1].name, ph_accent1)) != 0)
{

if(LookupLetter2(tr, basic_letter, ph_letter1) != 0)
{
if(accent2 != 0)
{
if(Lookup(tr, accents_tab[accent2].name, ph_accent2) == 0)
if((flags2 = Lookup(tr, accents_tab[accent2].name, ph_accent2)) == 0)
{
// break;
}

if(accents_tab[accent2].flags & 1)
if(flags2 & FLAG_ACCENT_BEFORE)
{
strcpy(ph_buf,ph_accent2);
ph_buf += strlen(ph_buf);
@@ -485,7 +486,7 @@ void LookupAccentedLetter(Translator *tr, unsigned int letter, char *ph_buf)
{
if(accent1 == 0)
strcpy(ph_buf, ph_letter1);
else if((tr->langopts.accents & 1) || (accents_tab[accent1].flags & 1))
else if((tr->langopts.accents & 1) || (flags1 & FLAG_ACCENT_BEFORE) || (accents_tab[accent1].accent_flags & 1))
sprintf(ph_buf,"%s%c%c%s", ph_accent1, phonPAUSE_VSHORT, phonSTRESS_P, ph_letter1);
else
sprintf(ph_buf,"%c%s%c%s%c", phonSTRESS_2, ph_letter1, phonPAUSE_VSHORT, ph_accent1, phonPAUSE_VSHORT);
@@ -1684,7 +1685,18 @@ static int LookupNum2(Translator *tr, int value, int thousandplex, const int con
ph_tens[ix] = 0;
}
}
sprintf(ph_out,"%s%s%s",ph_tens, ph_digits, ph_ordinal);

if((tr->langopts.numbers2 & NUM2_ORDINAL_DROP_VOWEL) && (ph_ordinal[0] != 0))
{
ix = sprintf(ph_out,"%s%s", ph_tens, ph_digits);
if((ix > 0) && (phoneme_tab[(unsigned char)(ph_out[ix-1])]->type == phVOWEL))
ix--;
sprintf(&ph_out[ix], "%s", ph_ordinal);
}
else
{
sprintf(ph_out,"%s%s%s",ph_tens, ph_digits, ph_ordinal);
}
}
}


+ 2
- 1
src/sonic.cpp View File

@@ -767,6 +767,7 @@ static int adjustPitch(
}

/* Skip over a pitch period, and copy period/speed samples to the output */
/* NOTE: Only called if speed > 1.0f */
static int skipPitchPeriod(
sonicStream stream,
short *samples,
@@ -778,7 +779,7 @@ static int skipPitchPeriod(

if(speed >= 2.0f) {
newSamples = period/(speed - 1.0f);
} else if(speed > 1.0f) {
} else {
newSamples = period;
stream->remainingInputToCopy = period*(2.0f - speed)/(speed - 1.0f);
}

+ 3
- 15
src/speak.cpp View File

@@ -455,17 +455,6 @@ static int initialise(void)
}


static void StopSpeak(int unused)
{//==============================
signal(SIGINT,SIG_IGN);
// DEBUG
// printf("\n*** Interrupting speech output (use Ctrl-D to actually quit).\n");
fflush(stdout);
SpeakNextClause(NULL,NULL,5);
signal(SIGINT,StopSpeak);
} // end of StopSpeak()



#ifdef NEED_GETOPT
struct option {
@@ -524,13 +513,15 @@ int main (int argc, char **argv)
char *optarg2;
int amp = 100; // default
int wordgap = 0;
int speaking = 0;
int flag_stdin = 0;
int flag_compile = 0;
int pitch_adjustment = 50;
espeak_VOICE voice_select;
char filename[200];
char voicename[40];
#ifdef USE_PORTAUDIO
int speaking = 0;
#endif

voicename[0] = 0;
mbrola_name[0] = 0;
@@ -898,9 +889,6 @@ int main (int argc, char **argv)
}
else
{
// Silence on ^C or SIGINT
// signal(SIGINT,StopSpeak);

// output sound using portaudio
WavegenInitSound();


+ 2
- 2
src/synthdata.cpp View File

@@ -1,5 +1,5 @@
/***************************************************************************
* Copyright (C) 2005 to 2013 by Jonathan Duddington *
* Copyright (C) 2005 to 2014 by Jonathan Duddington *
* email: [email protected] *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"

const char *version_string = "1.48.03 04.Mar.14";
const char *version_string = "1.48.05 23.May.14";
const int version_phdata = 0x014801;

int option_device_number = -1;

+ 6
- 0
src/synthesize.cpp View File

@@ -1345,6 +1345,7 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
int modulation;
int pre_voiced;
int free_min;
int value;
unsigned char *pitch_env=NULL;
unsigned char *amp_env;
PHONEME_TAB *ph;
@@ -1687,6 +1688,11 @@ int Generate(PHONEME_LIST *phoneme_list, int *n_ph, int resume)
StartSyllable();
}
InterpretPhoneme(NULL, 0, p, &phdata, &worddata);

if((value = (phdata.pd_param[i_PAUSE_BEFORE] - p->prepause)) > 0)
{
DoPause(value, 1);
}
fmtp.std_length = phdata.pd_param[i_SET_LENGTH]*2;
fmtp.fmt_addr = phdata.sound_addr[pd_FMT];
fmtp.fmt_amp = phdata.sound_param[pd_FMT];

+ 10
- 1
src/tr_languages.cpp View File

@@ -51,6 +51,7 @@
#define OFFSET_ARMENIAN 0x530
#define OFFSET_HEBREW 0x590
#define OFFSET_ARABIC 0x600
#define OFFSET_SYRIAC 0x700
#define OFFSET_THAANA 0x780 // Divehi/Maldives
#define OFFSET_DEVANAGARI 0x900
#define OFFSET_BENGALI 0x980
@@ -78,6 +79,7 @@ ALPHABET alphabets [] = {
{"_hy", OFFSET_ARMENIAN, 0x530, 0x58f, L('h','y'), AL_WORDS},
{"_he", OFFSET_HEBREW, 0x590, 0x5ff, 0, 0},
{"_ar", OFFSET_ARABIC, 0x600, 0x6ff, 0, 0},
{"_syc", OFFSET_SYRIAC, 0x700, 0x74f, 0, 0},
{"_dv", OFFSET_THAANA, 0x780, 0x7bf, 0, 0},
{"_hi", OFFSET_DEVANAGARI, 0x900, 0x97f,L('h','i'), AL_WORDS},
{"_bn", OFFSET_BENGALI, 0x0980, 0x9ff, L('b','n'), AL_WORDS},
@@ -516,6 +518,9 @@ Translator *SelectTranslator(const char *name)


case L('a','r'): // Arabic
tr->transpose_min = 0x620; // for ar_list, use 6-bit character codes
tr->transpose_max = 0x65f;
tr->transpose_map = NULL;
tr->letter_bits_offset = OFFSET_ARABIC;
tr->langopts.numbers = NUM_SWAP_TENS | NUM_AND_UNITS | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_AND_HUNDRED | NUM_THOUSAND_AND | NUM_OMIT_1_THOUSAND;
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
@@ -541,6 +546,7 @@ Translator *SelectTranslator(const char *name)
{
static const short stress_lengths_bn[8] = {180, 180, 210, 210, 0, 0, 230, 240};
static const unsigned char stress_amps_bn[8] = {18,18, 18,18, 20,20, 22,22 };
static const char bn_consonants2[3] = {0x70, 0x71, 0};

SetupTranslator(tr,stress_lengths_bn,stress_amps_bn);
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
@@ -551,6 +557,7 @@ Translator *SelectTranslator(const char *name)
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
SetLetterBits(tr,LETTERGP_C,bn_consonants2);

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
@@ -779,6 +786,7 @@ Translator *SelectTranslator(const char *name)
static const unsigned char stress_amps_eu[8] = {16,16, 18,18, 18,18, 18,18 };
SetupTranslator(tr,stress_lengths_eu,stress_amps_eu);
tr->langopts.stress_rule = STRESSPOSN_2L; // ?? second syllable ??
tr->langopts.param[LOPT_SUFFIX] = 1;
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_HUNDRED_AND | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_VIGESIMAL;
}
break;
@@ -1417,7 +1425,7 @@ SetLengthMods(tr,3); // all equal
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 0x76; // [v] don't count this character at start of word
tr->langopts.param[LOPT_ALT] = 2; // call ApplySpecialAttributes2() if a word has $alt or $alt2
tr->langopts.param[LOPT_IT_LENGTHEN] = 1; // remove lengthen indicator from unstressed syllables
tr->letter_bits['r'] |= 0x80; // add 'r' to letter group 7, vowels for Unpronouncable test
tr->letter_bits[(int)'r'] |= 0x80; // add 'r' to letter group 7, vowels for Unpronouncable test
tr->langopts.numbers = NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_SWAP_TENS | NUM_OMIT_1_HUNDRED | NUM_DFRACTION_2 | NUM_ORDINAL_DOT | NUM_ROMAN;
tr->langopts.numbers2 = 0x100; // plural forms of millions etc
tr->langopts.thousands_sep = ' '; // don't allow dot as thousands separator
@@ -1521,6 +1529,7 @@ SetLengthMods(tr,3); // all equal
{
tr->letter_bits_offset = OFFSET_TELUGU;
tr->langopts.numbers = 0x1;
tr->langopts.numbers2 = NUM2_ORDINAL_DROP_VOWEL;
}
SetIndicLetters(tr); // call this after setting OFFSET_
SetLetterBitsRange(tr,LETTERGP_B,0x4e,0x4e); // chillu-virama (unofficial)

+ 2
- 2
src/translate.cpp View File

@@ -949,7 +949,7 @@ int TranslateWord(Translator *tr, char *word_start, int next_pause, WORD_TAB *wt
found = LookupDictList(tr, &word1, phonemes, dictionary_flags, FLAG_ALLOW_TEXTMODE, wtab); // the original word


if((dictionary_flags[0] & (FLAG_ALLOW_DOT || FLAG_NEEDS_DOT)) && (wordx[1] == '.'))
if((dictionary_flags[0] & (FLAG_ALLOW_DOT | FLAG_NEEDS_DOT)) && (wordx[1] == '.'))
{
wordx[1] = ' '; // remove a Dot after this word
}
@@ -2070,7 +2070,7 @@ static int TranslateWord2(Translator *tr, char *word, WORD_TAB *wtab, int pre_pa
if(pre_pause < 1)
pre_pause = 1;
}
if((flags & FLAG_PREPAUSE) && !(word_flags && (FLAG_LAST_WORD | FLAG_FIRST_WORD)) && !(wtab[-1].flags & FLAG_FIRST_WORD) && (tr->prepause_timeout == 0))
if((flags & FLAG_PREPAUSE) && !(word_flags & (FLAG_LAST_WORD | FLAG_FIRST_WORD)) && !(wtab[-1].flags & FLAG_FIRST_WORD) && (tr->prepause_timeout == 0))
{
// the word is marked in the dictionary list with $pause
if(pre_pause < 4) pre_pause = 4;

+ 3
- 0
src/translate.h View File

@@ -44,6 +44,7 @@
#define FLAG_STRESS_END2 0x400 // full stress if at end of clause, or only followed by unstressed
#define FLAG_UNSTRESS_END 0x800 // reduce stress at end of clause
#define FLAG_SPELLWORD 0x1000 // re-translate the word as individual letters, separated by spaces
#define FLAG_ACCENT_BEFORE 0x1000 // say this accent name before the letter name
#define FLAG_ABBREV 0x2000 // spell as letters, even with a vowel, OR use specified pronunciation rather than split into letters
#define FLAG_DOUBLING 0x4000 // doubles the following consonant

@@ -524,6 +525,7 @@ typedef struct {
#define NUM2_PERCENT_BEFORE 0x10000
#define NUM2_OMIT_1_HUNDRED_ONLY 0x20000
#define NUM2_ORDINAL_AND_THOUSANDS 0x40000
#define NUM2_ORDINAL_DROP_VOWEL 0x80000
// 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)
// bit9=(LANG=rw) say "thousand" and "million" before its number, not after
@@ -535,6 +537,7 @@ typedef struct {
// bit16=(LANG=si) say "%" before the number
// bit17=(LANG=ml) omit "one" before hundred only if there are no previous digits
// bit18=(LANG=ta) same variant for ordinals and thousands (#o = #a)
// bit19=(LANG=te) drop final vowel from cardial number before adding ordinal suffix
int numbers2;

#define BREAK_THOUSANDS 0x49249248

+ 1
- 1
src/voices.cpp View File

@@ -610,7 +610,7 @@ voice_t *LoadVoice(const char *vname, int control)

// which directory to look for a named voice. List of voice names, must end in a space.
static const char *voices_asia =
"az bn fa fa-pin hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue vi-sgn zh zh-yue ";
"az bn fa fa-pin gu hi hy hy-west id ka kn ku ml ms ne pa ta te tr vi vi-hue vi-sgn zh zh-yue ";
static const char *voices_europe =
"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 ";


Loading…
Cancel
Save