Browse Source

[1.45.11]

lang=Turkish, fix pronunciation of suffixes, fix suffixes after names.

Windows: command option --stdout caused spurious 0x0d bytes to be included in speech output (CR/LF problem).

Fixed crash which could occur when a clause starts with a hyphen.

espeakedit: New input format for Bulgarian lexicon.

lang=de: Fix important pronunciation error (editing error) for "sage".


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@259 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 14 years ago
parent
commit
82b01c0336

+ 1
- 1
dictsource/de_rules View File

a (C_ A: a (C_ A:
@) a (bl_ 'A: @) a (bl_ 'A:
@) a (bel_ 'A: @) a (bel_ 'A:
s) a (g A:Spionage
s) a (g A:
@l) a (g A: @l) a (g A:
schl) ag (ge A:k schl) ag (ge A:k
scl) a (g A: scl) a (g A:

+ 30
- 19
dictsource/dict_phonemes View File

z Z z Z




Dictionary hu_dict 2011-03-10
Dictionary hu_dict 2011-03-30


a A a: E e: i i: o a A a: E e: i i: o
o: u u: Y y y: Y: o: u u: Y y y: Y:
s2 t t2 tS ts v z Z s2 t t2 tS ts v z Z




Dictionary de_dict 2011-03-14
Dictionary de_dict 2011-03-31


3 3: @ @- a A A: aI 3 3: @ @- a A A: aI
aU A~ e E E2 E: e: EI
i I i2 i: n- o O o:
OY U u: W y y: Y:
aU A~ E E2 E: e: EI i
I i2 i: n- o O o: OY
U u: W y y: Y:


* : ; b C d D dZ * : ; b C d D dZ
f g g# h j k l m f g g# h j k l m
ts v x z z; ts v x z z;




Dictionary en_dict 2011-03-09
Dictionary en_dict 2011-03-30


0 3 3: @ @- @2 @5 @L 0 3 3: @ @- @2 @5 @L
a a# A: A@ aa aI aI@ aU a a# A: A@ aa aI aI@ aU
t. th th. v w x z t. th th. v w x z




Dictionary ta_dict 2011-03-13
Dictionary ta_dict 2011-03-30


a a: aI aU e E e: i a a: aI aU e E e: i
I i: o o: u U u2 u: I i: o o: u U u2 u:
t tS v w x t tS v w x




Dictionary nl_dict 2011-03-13
Dictionary nl_dict 2011-03-30


8 @ @- a A a: A~ e 8 @ @- a A a: A~ e
E E2 e: EI eU i I o E E2 e: EI eU i I o
z; Z; z; Z;




Dictionary ru_dict 2011-03-14
Dictionary ru_dict 2011-03-25


8 @- a A e E E# E% 8 @- a A e E E# E%
E2 i I I# I3 I^ ja ju E2 i I I# I3 I^ ja ju
v w x z Z v w x z Z




Dictionary tr_dict 2011-01-28
Dictionary tr_dict 2011-03-17


@ a e E i I o O @ a e E i I o O
u U W y Y u U W y Y
z Z z Z




Dictionary ml_dict 2011-03-09
Dictionary ml_dict 2011-03-26


@ a a: aI aU e E e: @ a a: aI aU e E e:
i I i: o o: r- u u: i I i: o o: r- u u:
V y V y


: b bh c ch d d. dh
dh. dZ f g gh h j J
Jh k kh l l. m n N
n. n^ p ph r R r. R2
s s. S; t t. th th. tS
v w z
#X1 #X2 : b bh c ch d
d. dh dh. dZ f g gh h
j J Jh k kh l l. m
n N n. n^ p ph r R
r. R2 s s. S; t t. th
th. tS v w z




Dictionary ne_dict 2008-12-16 Dictionary ne_dict 2008-12-16
z Z z. z Z z.




Dictionary bg_dict 2011-03-12
Dictionary bg_dict 2011-03-25


@ a e i o u @ a e i o u


v w x X z v w x X z




Dictionary te_dict 2011-03-14
Dictionary te_dict 2011-03-22


a a: aI aU e E e: i a a: aI aU e E e: i
i: l- o o: r- u u: V i: l- o o: r- u u: V
p p# Q q r s S t p p# Q q r s S t
t# tS ts ts# v w x z t# tS ts ts# v w x z
Z Z


Dictionary si_dict 2011-03-16

& &: @ a a: aI aU e
E e: i i: o o: u u:

b d d. dZ f g h j
k l l. m m# n N n#
N# n. n.# n^ n^# p r s
S t t. th tS v w z

+ 2
- 0
dictsource/en_list View File

orange 0rI2ndZ orange 0rI2ndZ
orion 0r'aI@n orion 0r'aI@n
ordeal O@d'i@l ordeal O@d'i@l
oregano 0rIg'A:noU
orphan O@f@n // orphaned orphan O@f@n // orphaned
outage $1 outage $1
outback $1 outback $1
remit ri:mIt remit ri:mIt
remit ri:m'It $verb remit ri:m'It $verb
remnant rEmn@nt remnant rEmn@nt
renal ri:n@L
rendevous r0ndI2vu: rendevous r0ndI2vu:
rendezvous r0ndI2vu: rendezvous r0ndI2vu:
renegade rEn@geId renegade rEn@geId

+ 1
- 0
dictsource/en_rules View File

_) o (Bal oU _) o (Bal oU
XC) o (Bal oU XC) o (Bal oU
X) o (By oU X) o (By oU
_) o (Cy+ 0
o (Be# oU o (Be# oU
o (BeCo_ 0 o (BeCo_ 0
o (BenC oU o (BenC oU

+ 61
- 1
dictsource/hu_list View File

zajlott $unstressend zajlott $unstressend
fordultak $unstressend fordultak $unstressend
vették $unstressend vették $unstressend
fordult $unstressend
épül $unstressend épül $unstressend
bizonyítékok $unstressend bizonyítékok $unstressend
nyilvánításra $unstressend nyilvánításra $unstressend
állók $unstressend állók $unstressend
közöltek $unstressend
fájlba $unstressend
neve $unstressend
csinál $unstressend
különbséggel $unstressend
újítás $unstressend
példa $unstressend
veszik $unstressend
használni $unstressend
használó $unstressend
ötletek $unstressend
visz $unstressend
ugorni $unstressend
nekünk $unstressend
fejlődött $unstressend
részemről $unstressend
értettem $unstressend
hívott $unstressend
fellépések $unstressend
tavaly $unstressend
bizonyítani $unstressend
ricsaj $unstressend
tartani $unstressend
pontján $unstressend
létre $unstressend
szervezetként $unstressend
végez $unstressend
munkáját $unstressend
titkot $unstressend
remélik $unstressend
állítja $unstressend
maradni $unstressend
sorba $unstressend
köthető $unstressend
tekintik $unstressend
vezetője $unstressend
talált $unstressend
kerülni $unstressend
csomagokhoz $unstressend
lépésként $unstressend
vigyázni $unstressend
válhat $unstressend
fordulni $unstressend
hozniuk $unstressend
indítványt $unstressend
alkotmánynak $unstressend
csomagról $unstressend
okozott $unstressend
szerepelt $unstressend
testület $unstressend
kérhet $unstressend
vezethet $unstressend
tartaná $unstressend
hangzik $unstressend
kalkulál $unstressend
szolgál $unstressend
szánják $unstressend
gondoltam $unstressend
érzem $unstressend
érzed $unstressend
jellemző $unstressend


// word pairs // word pairs



+ 8
- 1
dictsource/hu_rules View File

ma) ch (iná h ma) ch (iná h
oligar) ch h oligar) ch h
legpe) ch (es h: legpe) ch (es h:
mazo) ch (izm h
mazo) ch (is h


.group d .group d
d d d d
mó) d (javaslat d mó) d (javaslat d
rekor) d (szint d rekor) d (szint d
kambo) dzs dZ: kambo) dzs dZ:
föl) d (szerke d //földszerkezet word for example need spokening single d before sz letter
harma) d (szint d


.group dz .group dz
fogó) dz (kod ts fogó) dz (kod ts
rava) sz (ár s rava) sz (ár s
_ka) sztsze st|sE _ka) sztsze st|sE
szemete) szs (ák SZ szemete) szs (ák SZ
dro) sztsze (rző st|sE //drosztszerződés word need spokening st and single sE phoneme


.group t .group t
t t t t
ha) t (cell t //for example hatcellás, hatcella word need spokening t before c letter. ha) t (cell t //for example hatcellás, hatcella word need spokening t before c letter.
pár) t (székház t pár) t (székház t



.group tj .group tj
C) tj c C) tj c
kür) tj c kür) tj c
ada) ts t|S //for example adatsor, adatsebesség words ada) ts t|S //for example adatsor, adatsebesség words
ada) tsz t|s //for example adatszolgáltatás word ada) tsz t|s //for example adatszolgáltatás word
gondola) ts (or t|S gondola) ts (or t|S
művele) ts (or t|S
művele) ts (o t|S
tábláza) ts (or t|S tábláza) ts (or t|S
vizsgála) ts (or t|S vizsgála) ts (or t|S
állapo) ts (or t|S állapo) ts (or t|S
gyakorla) ts (oroz t|S gyakorla) ts (oroz t|S
támogato) ts (ág tS: támogato) ts (ág tS:



.group tt .group tt
tt t: tt t:
ttgy t:J ttgy t:J

+ 21
- 2
dictsource/nl_list View File

weekend _^_EN weekend _^_EN




// verbs where -ent is not a stressed ending
bakent $alt
effent $alt
jegent $alt
kerstent $alt
ketent $alt
loochent $alt
oefent $alt
opent $alt
regent $alt
rekent $alt
stevent $alt
tekent $alt
wapent $alt
zegent $alt


// words where -er is not a stressed verb ending // words where -er is not a stressed verb ending


achter $alt achter $alt
amandel $alt amandel $alt
appel $alt appel $alt
artikel $alt artikel $alt
beginsel $alt
ginsel $alt // beginsel
discipel dIs'ip@l $alt discipel dIs'ip@l $alt
engel $alt engel $alt
fabel $alt fabel $alt
gruwel $alt gruwel $alt
heuvel $alt heuvel $alt
hommel $alt
letsel $alt letsel $alt
mazel $alt mazel $alt
meubel $alt meubel $alt
accessoires aksEsv#'ar@s accessoires aksEsv#'ar@s
actiepunt Aksip8nt actiepunt Aksip8nt
agenda $2 agenda $2
alles Al@s
amino $1 amino $1
amnestie $3 amnestie $3
april a:pr'Il april a:pr'Il
armand _^_FR armand _^_FR
artikel art,ik@l
augustus VUQ'8st8s augustus VUQ'8st8s
be $abbrev // used as domain abbrev for Belgium and in a lot of other names be $abbrev // used as domain abbrev for Belgium and in a lot of other names
beha be:_h'a: beha be:_h'a:
reservoir re:zErvv#'a:r reservoir re:zErvv#'a:r
revanche r@vA~nS revanche r@vA~nS
regime $2 regime $2
roman $2
sacristie $3 sacristie $3
saint _^_FR saint _^_FR
salomo $1 salomo $1

+ 29
- 2
dictsource/nl_rules View File

@) aard (_@S4 a:rt @) aard (_@S4 a:rt
aa (rd_ 'a: aa (rd_ 'a:
aa (C_ 'a: aa (C_ 'a:
z) aa (m_ a:
@) abel (_ 'a:bE2l @) abel (_ 'a:bE2l
@) abele (_ 'a:b@l@ @) abele (_ 'a:b@l@
m) ach (in %a:S m) ach (in %a:S
dt t dt t
ds (_N ts ds (_N ts
// _) de (CC@P2 d@ // Used a lot in family names // _) de (CC@P2 d@ // Used a lot in family names
_) de (zelf d@




.group e .group e
&) el (de_$p_alt =@l &) el (de_$p_alt =@l
&) el (den_$p_alt =@l &) el (den_$p_alt =@l
&) el (end_$p_alt =@l &) el (end_$p_alt =@l
&) el (ing_$p_alt =@l
&) el (ingen_$p_alt =@l
&) er (_$p_alt =@r &) er (_$p_alt =@r
&) er (e_$p_alt =@r &) er (e_$p_alt =@r
&) er (en_$p_alt =@r &) er (en_$p_alt =@r
&) elijks @l@ks &) elijks @l@ks
&) em (_ @m &) em (_ @m
&) e (ment @ &) e (ment @
&) e (nissen_ @
&) en (_S2qd @n &) en (_S2qd @n
&) ens (_S3q @ns &) ens (_S3q @ns
&) end (_ @nd &) end (_ @nd
&) ende (_ @nd@ &) ende (_ @nd@
&) enden (_ @nd@n &) enden (_ @nd@n
eden e:d@n eden e:d@n
&) ent (_$w_alt =@nt
@) ent (_ 'Ent @) ent (_ 'Ent
@) ent (e_ 'Ent @) ent (e_ 'Ent
@) ent (en_ 'Ent @) ent (en_ 'Ent
@) ent (er_ 'Ent @) ent (er_ 'Ent
@) ent (ere_ 'Ent
@) ent (st_ 'Ent
@) ent (ste_ 'Ent
ag) ent 'Ent ag) ent 'Ent
&) er (_ @r &) er (_ @r
&) ere (_ @r@ &) ere (_ @r@
&) er (en_$p_alt @r // where 'eren' is not a verb ending &) er (en_$p_alt @r // where 'eren' is not a verb ending
eren (_ 'I:r@n eren (_ 'I:r@n
@j) es (_ @s
@) es (_S2qd 'Es @) es (_S2qd 'Es
@) essen (_S5qd'Es@n @) essen (_S5qd'Es@n
@) eres (_S4qd @r'Es @) eres (_S4qd @r'Es
@) eressen (_S7sq @r'Es@n
@) eressen (_S7sq @r'Es@n
@) etten (_S3 @n @) etten (_S3 @n
@) es (_$p_alt @s // for wors which end on [@] with multiple on 's'. @) es (_$p_alt @s // for wors which end on [@] with multiple on 's'.
euille @'y euille @'y
&) e (nB@ E2 &) e (nB@ E2
id) e (nt E id) e (nt E
_) er (@P2 Er _) er (@P2 Er
_) erger ErQ@r // ergeren
&) era (_ @ra: &) era (_ @ra:
@) e (raar_ @ @) e (raar_ @
&) e (rC@ E2 &) e (rC@ E2
gg Q gg Q


_) ge (@P2 Q@ _) ge (@P2 Q@
ge (bied Q@
_) gee Qe: _) gee Qe:
gener (aal Q,e:n@r gener (aal Q,e:n@r
_) gelijk Q@lEIk _) gelijk Q@lEIk


_) her (@P3 hEr _) her (@P3 hEr
_) her (en hI:r _) her (en hI:r
_) herinn h%ErIn // herinneren
_) hersen h'Ers@n
&) heid (_S4 hEIt &) heid (_S4 hEIt




ie (rd_ 'i ie (rd_ 'i
@) ig (_S2dq @x @) ig (_S2dq @x
@) ige (_ @Q@ @) ige (_ @Q@
@) igen (_ @Q@n
@) igen (_ @Q@n
@) iger (_ @Q@r
@) igere (_ @Q@r@
@) igst (_ @Qst
@) igste (_ @Qst@
ij (_ 'EI ij (_ 'EI
ij (e_ 'EI ij (e_ 'EI
@) ij (n_ 'EI @) ij (n_ 'EI
&) lijk (_S4 l@k &) lijk (_S4 l@k
&) lijke (_S5 l@k@ &) lijke (_S5 l@k@
&) lijken (_S6 l@k@n &) lijken (_S6 l@k@n
&) lijker (_S6 l@k@r
&) lijkere (_S7 l@k@r@
&) lijkst (_S6 l@kst
&) lijkste (_S7 l@kst@
&) laan (_S4 la:n &) laan (_S4 la:n
_) lange (@P5 laN@ _) lange (@P5 laN@
@) loog (_ lo:x @) loog (_ lo:x
_) na (C@@P2 n'a: _) na (C@@P2 n'a:
_) na (tion na: _) na (tion na:
_) na (der na: _) na (der na:
_) natuur na:t'yr
_) noord (@P5 no:rd _) noord (@P5 no:rd
_) nieuws (@P6 n'iws _) nieuws (@P6 n'iws
@@) nis (_@S3 nIs @@) nis (_@S3 nIs
@@) nisen (_@S5 nIs@n




.group o .group o
_) uit (@P3 'Wyt _) uit (@P3 'Wyt
u (re_ 'y u (re_ 'y
@) ute (_ 'yt @) ute (_ 'yt
uu (r_ 'y




.group v .group v
_) ver (@P3 v@r _) ver (@P3 v@r
_) ver (sie_ vEr _) ver (sie_ vEr
_) verder vErd@r _) verder vErd@r
_) verge (le v@rQ'e:
_) voort (@P5 v'O:rt _) voort (@P5 v'O:rt




$ d'OlAr $ d'OlAr
, (D k'Oma: , (D k'Oma:
__) - (_D m'In __) - (_D m'In
@) 's (_S2 s





+ 2
- 2
dictsource/ru_list View File

_6X SE2z;d;d;Is;'jat _6X SE2z;d;d;Is;'jat
_7X s;'emd;E2s;Vt _7X s;'emd;E2s;Vt
_8X v'os;E2md;E2s;Vt _8X v'os;E2md;E2s;Vt
_9X d;E2v;In'ostO
_9X d;evIn'ostO
_0C st'o _0C st'o
_2C dv;'es;t;I _2C dv;'es;t;I
_3C tr;'ista _3C tr;'ista
_6C S,E#s;t;s'ot _6C S,E#s;t;s'ot
_7C s;,Ims'ot _7C s;,Ims'ot
_8C vOs;Ims'ot _8C vOs;Ims'ot
_9C dev;Vn'ostO
_9C devits'ot
_1MA1 t'ys;ItS;V // no '1' before thousand _1MA1 t'ys;ItS;V // no '1' before thousand
_0MA1 t'ys;ItS;i _0MA1 t'ys;ItS;i
_0M1 t'ys;VtS; _0M1 t'ys;VtS;

+ 41
- 3
dictsource/ta_rules View File

ோ ோ ோ ோ
ௌ ௌ ௌ ௌ



// க is k when preceded by these // க is k when preceded by these
.L01 ஷ் ஸ் ட் .L01 ஷ் ஸ் ட்


.L06 க ஹ .L06 க ஹ


// words before "bottle" // words before "bottle"
.L10 பீர் கலர் சாராய சோடா தண்ணி தண்ணீர் பிராந்தி வாட்டர் விஸ்கி
.L10 பீர் கலர் சாராய சோடா தண்ணி தண்ணீர் பிராந்தி வாட்டர் விஸ்கி பிளாஸ்டிக் ப்ளாஸ்டிக்

// words after "booga"
.L11 வாழ்க்கை பூமி விருந்த மனிதன




// consonants // consonants
_) க (தியில் gV _) க (தியில் gV
_) க (தியை gV _) க (தியை gV
_) க (ந்தர்வ gV _) க (ந்தர்வ gV
_) க (னக்க gV
_) க (னத் gV _) க (னத் gV
_) க (னம gV _) க (னம gV
_) கப் (L04ா gVp _) கப் (L04ா gVp
_) க (ுருக்கள g _) க (ுருக்கள g
_) க (ுருக்குல g _) க (ுருக்குல g
_) க (ுருசாமி g _) க (ுருசாமி g
_) க (ுருஜி g
_) க (ுருதேவ g _) க (ுருதேவ g
_) க (ுருநா g _) க (ுருநா g
_) க (ுருபூஜை g _) க (ுருபூஜை g
_மாளவி) க (ா k _மாளவி) க (ா k
_மோனி) க (ா k _மோனி) க (ா k
_மௌனி) க (ா k _மௌனி) க (ா k
_ஸ்ரீலங்) க (ா k
_ஹன்L04ி) க (ா k _ஹன்L04ி) க (ா k
_ஹாங்) க (ாங் k _ஹாங்) க (ாங் k
_தென்) க (ாசி k _தென்) க (ாசி k
கு) க்கி (ராம gg கு) க்கி (ராம gg
அ) க்கி (ராம gg அ) க்கி (ராம gg
இ) க்கி (ராம gg இ) க்கி (ராம gg
L03) க்க (ுகை gg
_மு) க்க (ுண gg _மு) க்க (ுண gg
அணு) க்க (ுண்ட gg அணு) க்க (ுண்ட gg
_துப்பாக்கி) க்க (ுண்ட gg _துப்பாக்கி) க்க (ுண்ட gg
_செ) க்யூரிட (ி kjU:rit. _செ) க்யூரிட (ி kjU:rit.
_ச) க்ரப (ாணி krVp _ச) க்ரப (ாணி krVp
வி) க (்ரம k வி) க (்ரம k
_ரெ) க்ரூட் krU:t.
ஆ) க (்ரோஷ k ஆ) க (்ரோஷ k
_பை) க் (ல_ k _பை) க் (ல_ k
என்சை) க்லோப (ீடியா klo:p என்சை) க்லோப (ீடியா klo:p
_) சாக்லேட் tSa:kle:t. _) சாக்லேட் tSa:kle:t.
_) ச (ாணக்கிய tS _) ச (ாணக்கிய tS
ச (ாந்தி s. ச (ாந்தி s.
_) ச (ாந்தின tS
_தே) ச (ாந்திர s _தே) ச (ாந்திர s
_) ச (ாந்தில tS
_) ச (ான்ஸ tS _) ச (ான்ஸ tS
_) சாப் (ளின tSa:p _) சாப் (ளின tSa:p
_) ச (ாமுண்ட tS _) ச (ாமுண்ட tS
இராவணே) சு (வர s இராவணே) சு (வர s
ராவணே) சு (வர s ராவணே) சு (வர s
_) சுவர்க்க svVrggV# _) சுவர்க்க svVrggV#
_) சுவர்க்க (ோழி suvVrgg
_) சு (வாச s _) சு (வாச s
சு (வாதீன s சு (வாதீன s
சு (வாமி s சு (வாமி s
_) செயின்ட sejint.V# _) செயின்ட sejint.V#
_) ச (ெய்ன tS _) ச (ெய்ன tS
_) செய்ன்ட sejnt.V# _) செய்ன்ட sejnt.V#
_) ச (ெர்னோபில tS
_) ச (ெல்லக்குட்டி tS _) ச (ெல்லக்குட்டி tS
_) ச (ெல்லத்துக்கு tS _) ச (ெல்லத்துக்கு tS
_) ச (ெல்லத்தை tS _) ச (ெல்லத்தை tS
_) ச (ெல்லப்ப tS
_) ச (ெல்லப்பன tS
_) ச (ெல்லப்பா tS
_) ச (ெல்லப்பிள்ளை tS
_) ச (ெல்லப்பெண் tS
_) ச (ெல்லப்பையன tS
_) ச (ெல்லமா tS _) ச (ெல்லமா tS
_) ச (ெஸ் tS _) ச (ெஸ் tS
_) ச (ேஞ்ச tS _) ச (ேஞ்ச tS
அர்ஜண்) ட t.V# அர்ஜண்) ட t.V#
அர்ஜெண்) ட t.V# அர்ஜெண்) ட t.V#
இண்டர்மீடியே) ட t.V# இண்டர்மீடியே) ட t.V#
_) ட (ஃப் t.V
_) ட (க்கர t.V _) ட (க்கர t.V
ங்) ட (ன t.V // -ington ங்) ட (ன t.V // -ington
_நியூ) ட (ன t.V _நியூ) ட (ன t.V
_) டாட (ா t.a:t. _) டாட (ா t.a:t.
_) ட (ான்சானிய t. _) ட (ான்சானிய t.
_) ட (ான்ஜானிய t. _) ட (ான்ஜானிய t.
_) டாபிக் t.a:pik
_) ட (ாமி t.
அண்) டார்டிக t.a:rt.ikV# அண்) டார்டிக t.a:rt.ikV#
_) ட (ாலமி t. _) ட (ாலமி t.
_) ட (ால்ஸ்டாய t. _) ட (ால்ஸ்டாய t.
_) டிர (ஸ d.re _) டிர (ஸ d.re
_) டிர (ஸ்ட t.rV _) டிர (ஸ்ட t.rV
_) டிராஃபிக் t.ra:fik _) டிராஃபிக் t.ra:fik
_) டி (ராகுலா d.
_) டிராக் t.ra:k _) டிராக் t.ra:k
_காண்) டி (ராக்டர t. _காண்) டி (ராக்டர t.
_) டி (ராஜ t. _) டி (ராஜ t.
_) டி (ராவல t. _) டி (ராவல t.
_) டி (ராவெல t. _) டி (ராவெல t.
_) டிரிக (ர t.riggV _) டிரிக (ர t.riggV
_) டிரிக் t.rik
_) டிரிக்க (ர t.riggV _) டிரிக்க (ர t.riggV
_) டி (ரிம் t. _) டி (ரிம் t.
_) டிரீட் t.ri:t.
_) டிரெயி(லர t.rej _) டிரெயி(லர t.rej
_) டி (ரெயின t. _) டி (ரெயின t.
_) டி (ரெய்லர t. _) டி (ரெய்லர t.
_) ட (ோக்கியோ t. _) ட (ோக்கியோ t.
_) டோரண்ட (ோ t.o:rVn.t. _) டோரண்ட (ோ t.o:rVn.t.
_ப்ரி) ட (ோரிய t. _ப்ரி) ட (ோரிய t.
@மெண்) ட் t. // -ment
இண்டர்நெ) ட் t. இண்டர்நெ) ட் t.
_ல) ட்ட d.d.V# _ல) ட்ட d.d.V#
_ரெ) ட்ட (ியா d.d. _ரெ) ட்ட (ியா d.d.
_) ட் (ராவல t. _) ட் (ராவல t.
_) ட் (ராவெல t. _) ட் (ராவெல t.
_) ட்ரிக (ர t.riggV _) ட்ரிக (ர t.riggV
_) ட்ரிக் t.rik
_) ட்ரிக்க (ர t.riggV _) ட்ரிக்க (ர t.riggV
_) ட் (ரிம் t. _) ட் (ரிம் t.
_) ட்ரீட் t.ri:t.
_வி) ட் (ரு t. _வி) ட் (ரு t.
_கே) ட் (ரு t. _கே) ட் (ரு t.
_போ) ட் (ரு t. _போ) ட் (ரு t.
_கூ) ட் (ல t. _கூ) ட் (ல t.
_நா) ட் (ல t. _நா) ட் (ல t.
_பா) ட் (ல t. _பா) ட் (ல t.
_மே) ட் (ல t.
_ரூ) ட் (ல t. _ரூ) ட் (ல t.
_நோ) ட் (ல t. _நோ) ட் (ல t.
_ரோ) ட் (ல t. _ரோ) ட் (ல t.
_) த (ருமத் dV _) த (ருமத் dV
_) த (ருமன dV _) த (ருமன dV
_) தருமப (ுரி dVrUmVp _) தருமப (ுரி dVrUmVp
_) த (ருமம dV
_) த (ருமர dV _) த (ருமர dV
_) த (ருமி dV _) த (ருமி dV
_) த (ர்க dV _) த (ர்க dV
_) த (ுச்சாதனன d _) த (ுச்சாதனன d
_) த (ுட்ட d _) த (ுட்ட d
_) த (ுபாய d _) த (ுபாய d
_) த (ுபாஷி d
_) த (ுப்பட்டா d _) த (ுப்பட்டா d
_) த (ுமளி d _) த (ுமளி d
_) த (ுரதிருஷ்ட d _) த (ுரதிருஷ்ட d
_சீ) த (ா t _சீ) த (ா t
_ல) த (ா t _ல) த (ா t
_சபி) த (ா t _சபி) த (ா t
_சபீ) த (ா t
அனி) த (ா t அனி) த (ா t
சுஜா) த (ா t சுஜா) த (ா t
லலி) த (ா t லலி) த (ா t
_சுனி) த (ா t _சுனி) த (ா t
_ஹரி) த (ா t
_வனி) த (ா t _வனி) த (ா t
_வினி) த (ா t _வினி) த (ா t
_நிவேதி) த (ா t _நிவேதி) த (ா t
வாசந்) த (ி t வாசந்) த (ி t
_கோம) த (ி t _கோம) த (ி t
ஜெயந்) த (ி t ஜெயந்) த (ி t
_துஷ்யந்) த (ி t
_பார்வ) த (ி t _பார்வ) த (ி t
_பிரசார்_பார) த (ி t _பிரசார்_பார) த (ி t
பிரபாவ) த (ி t பிரபாவ) த (ி t
_) ப (லப்பரீட்சை bV _) ப (லப்பரீட்சை bV
_) ப (லம bV _) ப (லம bV
_) ப (லமடங்க pV _) ப (லமடங்க pV
_) ப (லமாடி pV
_) ப (லமுறை pV _) ப (லமுறை pV
_) ப (லமொழி pV _) ப (லமொழி pV
_) ப (லராம bV _) ப (லராம bV
_) ப (ாணமு b _) ப (ாணமு b
_) ப (ாணி b _) ப (ாணி b
_) ப (ாதிக்க b _) ப (ாதிக்க b
_) ப (ாதிக்கண் p
_) ப (ாதிக்கு_ p _) ப (ாதிக்கு_ p
_) ப (ாதிக்கும்_குறை p _) ப (ாதிக்கும்_குறை p
_) ப (ாதிக்கும்_மேற் p _) ப (ாதிக்கும்_மேற் p
_) ப (ாலக்காட p _) ப (ாலக்காட p
_) ப (ாலச b _) ப (ாலச b
_) ப (ாலதண் b _) ப (ாலதண் b
_) ப (ாலன b
_) பாலப (ாட ba:lVp _) பாலப (ாட ba:lVp
_) ப (ாலமுர b _) ப (ாலமுர b
_) ப (ாலய்யா b _) ப (ாலய்யா b
_) புரப (L04ர profV _) புரப (L04ர profV
_) புரபொ (சர profV _) புரபொ (சர profV
_) பு (ரவுச b _) பு (ரவுச b
_) ப (ுருடா b
_) புரொப (சர profV _) புரொப (சர profV
_) புரொபொ (சர profV _) புரொபொ (சர profV
_) ப (ுரோக்கர b _) ப (ுரோக்கர b
_) ப (ொம்மன b _) ப (ொம்மன b
_) ப (ொம்மல b _) ப (ொம்மல b
_) ப (ொம்மை b _) ப (ொம்மை b
_) ப (ோக_L11 b
_) ப (ோகங்க b _) ப (ோகங்க b
_) ப (ோகத்த b
_) ப (ோகத்திற்க b _) ப (ோகத்திற்க b
_) ப (ோகத்தில b _) ப (ோகத்தில b
_) ப (ோகத்துக்க b _) ப (ோகத்துக்க b
_ஒலி) ப (ரப் pV _ஒலி) ப (ரப் pV
_ஒளி) ப (ரப் pV _ஒளி) ப (ரப் pV
வீர) ப (ராக்கிரம pV வீர) ப (ராக்கிரம pV
_மறு) ப (ரிசீலனை pV
ஆ) ப (ரேசன pV ஆ) ப (ரேசன pV
ஆ) ப (ரேஷன pV ஆ) ப (ரேஷன pV
_கார்) ப (ரேஷன pV _கார்) ப (ரேஷன pV
_லாக) ப் p _லாக) ப் p
ஆ) ப் (கானிய f ஆ) ப் (கானிய f
ஆ) ப் (கானிஸ்தான f ஆ) ப் (கானிஸ்தான f
_பா) ப்க (ார்ன pk
_லி) ப் (ட f _லி) ப் (ட f
_மைக்ரோசா) ப் (ட f _மைக்ரோசா) ப் (ட f
கர்) ப்ப bbV# கர்) ப்ப bbV#

+ 149
- 21
dictsource/tr_list View File

_dpt _viRg,Yl_| _dpt _viRg,Yl_|




// Abbreviations
ab $abbrev $only
abd $abbrev $only
abgs $abbrev
afp $abbrev
aihm $abbrev
akm $abbrev
akp $abbrev
aöf $abbrev
ap $abbrev $only
atm $abbrev
atv $abbrev
avm $abbrev
ekg $abbrev
epdk $abbrev
ftaa $abbrev
gsyih $abbrev
ihd $abbrev
ımkb $abbrev
imkb $abbrev
imf $abbrev
imkb $abbrev
oecd $abbrev
ogs $abbrev
osb $abbrev
ödp $abbrev
öfk $abbrev
öıb $abbrev
öib $abbrev
öiv $abbrev
öss $abbrev
ösym $abbrev
ötv $abbrev
öyk $abbrev
şti $abbrev
tihv $abbrev
tmmob $abbrev
tmo $abbrev
tpao $abbrev
tsi $abbrev
tsyd $abbrev
tse $abbrev
ubp $abbrev
usd $abbrev
ykm $abbrev


// function words // function words


// conjunctions // conjunctions
ama $brk $1 // but ama $brk $1 // but
ki $u $brk // that ki $u $brk // that


mı $u // question
mi $u
mu $u
mü $u
mı $u $only // question
mi $u $only
mu $u $only
mü $u $only




// pronouns // pronouns
bu $u+ // this
şu $u+ // that
bu $u+ $only // this
şu $u+ $only // that


ben $u+ // I
sen $u+ // you
o $u+ // it
siz $u+ // we
biz $u+ // you
ben $u+ $only // I
sen $u+ $only // you
o $u+ $only // it
siz $u+ $only // we
biz $u+ $only // you






bir $u+ // a (or one)
bir $u+ $only // a (or one)


da $u // also
de $u
ta $u
te $u
da $u $only // also
de $u $only
ta $u $only
te $u $only


ile $u
ile $u $only




// EXCEPTIONS // EXCEPTIONS
merhaba $1


// Person Names
// If the word has a prefix for strengthening the meaning of the word, stress
// is at the prefix:
banka $1
bembeyaz $1
dosdoğru $1
dümdüz $1
kıpkırmızı $1
kıskıvrak $1
masmavi $1
mosmor $1
pespembe $1
posta $1
radyo $1
sapsarı $1
sımsıcak $1
simsiyah $1


// Place Names
ankara $1
istanbul $2
// Names
Hitler $1


// Place Names
// For place names with two syllables stress is at first syllable:
// For Place names that has three or more syllables, generally stress is at
// the syllable which has more letters or at the syllable which ends with a consonant:
Afyon $1
Ağrı $1
Almanya $2
Amasya $2
Ankara $1
Antalya $2
Artvin $1
Avrupa $1
Aydın $1
Bartın $1
Batman $1
Bayburt $1
Bingöl $1
Bitlis $1
Bodrum $1
Bolu $1
Burdur $1
Bursa $1
Çanakkale $2
Çankırı $1
Çorum $1
Denizli $2
Düzce $1
Edirne $2
Hakkari $1
Hatay $1
Iğdır $1
İngiltere $3
İskenderun $2
Isparta $2
İstanbul $2
İsveç $1
İzmir $1
Kastamonu $1
Kayseri $1
Kilis $1
Kırklareli $1
Konya $1
Kurtuluş $1
Kütahya $2
Malatya $2
Mardin $1
Mersin $1
Mudanya $2
Muğla $1
Niğde $1
Ordu $1
Pütürge $2
Rize $1
Sakarya $2
Samsun $1
Siirt $1
Sinop $1
Şırnak $1
Sivas $1
Tekirdağ $2
Tokat $1
Tunceli $1
Ukrayna $2
Urfa $1
Uşak $1
Yozgat $1

+ 7
- 2
dictsource/tr_rules View File



@) a (_S1 a @) a (_S1 a


@) acak (_S3 adZak
@) acak (_S4 adZak
@) acakmış (_S7 adZakm%@S @) acakmış (_S7 adZakm%@S
@) ayım (_S4 aj@m @) ayım (_S4 aj@m
@) alım (_S4 al@m @) alım (_S4 al@m
@) ı (_S1 @ @) ı (_S1 @


@) ım (_S2 %@m @) ım (_S2 %@m
@) ınız (_S2 %@n@z
@) ınız (_S4 %@n@z
@) ız (_S2 %@z @) ız (_S2 %@z
@) ıyor (_S4 @j%oR @) ıyor (_S4 @j%oR
@) ın (_S2 @n @) ın (_S2 @n
.group n .group n
n n n n


_) nda (_ nda // 'nda
_) nde (_ nde // 'nde
_) ndan (_ ndan // 'ndan
_) nden (_ nden // 'nden

nin (_S3 nin nin (_S3 nin
nın (_S3 n@n nın (_S3 n@n
nun (_S3 nun nun (_S3 nun

+ 30
- 14
phsource/compile_report View File

73 phoneme tables
74 phoneme tables
new total new total
base 107 107 base 107 107
consonants 10 116 consonants 10 116
sq 33 126 sq 33 126
hy 23 117 hy 23 117
da 27 120 da 27 120
ka 19 112
rw 15 130 rw 15 130
ml 18 151 ml 18 151
ne 18 157 ne 18 157
wo 18 118 wo 18 118
dv 14 150 dv 14 150
te 16 150 te 16 150
si 24 156
tn 27 119 tn 27 119
ka 19 112


Data file Used by Data file Used by
b/b [b] base b/b [b] base
[l/] fr [l/] fr
l/l_@ [l/3] base l/l_@ [l/3] base
[l/] fr [l/] fr
l/l@ [h–x] base
l/l@ [hF|] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
l/L2_uL [l/2] base l/L2_uL [l/2] base
l/l_3 [l/] de l/l_3 [l/] de
l/l_4 [ll] sq l/l_4 [ll] sq
l/la [h–x] base
l/la [hF|] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
[K] tn [K] tn
l/l_a [l/3] base l/l_a [l/3] base
[l/] fr [l/] fr
l/le [h–x] base
l/le [hF|] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
[&:] af [&:] af
l/l_front [L] sq l/l_front [L] sq
l/l_front_ [l/4] sq l/l_front_ [l/4] sq
l/li [h–x] base
l/li [hF|] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
ll/_ll [L] bg ll/_ll [L] bg
l/l_long [l] base l/l_long [l] base
[l] fr [l] fr
l/lo [h–x] base
l/lo [hF|] base
[l#] base [l#] base
[l/2] fr [l/2] fr
[K] nso [K] nso
l^/l_rfx [l.] base l^/l_rfx [l.] base
[l] ru [l] ru
[l^] ru [l^] ru
l/lu [h–x] base
l/lu [hF|] base
[l#] base [l#] base
[l] fr [l] fr
[l/2] fr [l/2] fr
[aI:] is [aI:] is
vdiph/ai_8 [aI] ta vdiph/ai_8 [aI] ta
[aI] dv [aI] dv
[aI] si
vdiph/aoo [aU] en-us vdiph/aoo [aU] en-us
[aU] it [aU] it
vdiph/au [aU] en vdiph/au [aU] en
[aU] ta [aU] ta
[a:U] vi [a:U] vi
[aU] prs [aU] prs
[aU] si
vdiph/au# [aU] en-sc vdiph/au# [aU] en-sc
vdiph/au_2 [au] zhy vdiph/au_2 [au] zhy
vdiph/au_3 [aU] en-rp vdiph/au_3 [aU] en-rp
[@4] hi [@4] hi
[@] kn [@] kn
[@] hy [@] hy
[@] ka
[@] sl [@] sl
[@] wo [@] wo
[@:] wo [@:] wo
[@] te [@] te
[@] ka
vowel/@- [@-] base vowel/@- [@-] base
[r*] hr [r*] hr
vowel/& [a] en-rp vowel/& [a] en-rp
[a] sv [a] sv
[a] is [a] is
[a/] sw [a/] sw
[a] ka
[a] ml [a] ml
[a] nso [a] nso
[a] te [a] te
[a] ka
[a] si
vowel/a_3 [a] en-sc vowel/a_3 [a] en-sc
[a/] en-sc [a/] en-sc
[A:] en-sc [A:] en-sc
[A] zh [A] zh
[a] sq [a] sq
[A] da [A] da
[a:] si
vowel/a#_3 [a#] en vowel/a#_3 [a#] en
[a#] en-n [a#] en-n
[a#] en-us [a#] en-us
vowel/ee_6 [&] sk vowel/ee_6 [&] sk
[E3] sv [E3] sv
[E] ku [E] ku
[&] si
[&:] si
vowel/e_mid [E] en-rp vowel/e_mid [E] en-rp
[E] fr [E] fr
[E~] fr [E~] fr
[E] id [E] id
[E2] id [E2] id
[e] hy [e] hy
[e] ka
[E] prs [E] prs
[e] bg [e] bg
[E] ht [E] ht
[e] ka
[e] si
vowel/e_mid2 [E] af vowel/e_mid2 [E] af
[E] de [E] de
[E2] de [E2] de
[e] az [e] az
[e] am [e] am
[e] te [e] te
[e:] si
vowel/@_fnt [@] en-wi vowel/@_fnt [@] en-wi
[@2] en-wi [@2] en-wi
[@2] hr [@2] hr
[i] zh [i] zh
[i] sw [i] sw
[i] hy [i] hy
[i] ka
[i] rw [i] rw
[i#] rw [i#] rw
[i:] ml [i:] ml
[i:] wo [i:] wo
[i:] dv [i:] dv
[i:] te [i:] te
[i] ka
[i:] si
vowel/i# [y:] cy vowel/i# [y:] cy
vowel/i_2 [i2] de vowel/i_2 [i2] de
[i:] de [i:] de
[i] bg [i] bg
[i] dv [i] dv
[i] te [i] te
[i] si
vowel/i#_6 [i.] zh vowel/i#_6 [i.] zh
vowel/i_7 [i] pl vowel/i_7 [i] pl
[i] sq [i] sq
[@] pa [@] pa
[V] pa [V] pa
[@] am [@] am
[@] si
vowel/@_low2 [@/] en-us vowel/@_low2 [@/] en-us
[@2] en-us [@2] en-us
vowel/o [o] base2 vowel/o [o] base2
[o] hr [o] hr
[o/] it [o/] it
[O] sq [O] sq
[O] tn
[o] ka [o] ka
[o] si
[o:] si
[O] tn
vowel/oo_2 [0] en-sc vowel/oo_2 [0] en-sc
[O] cy [O] cy
[o] cs [o] cs
[u:] dv [u:] dv
[u] te [u] te
[u:] te [u:] te
[u] si
[u:] si
vowel/u_7 [u] vi vowel/u_7 [u] vi
vowel/u#_7 [@] tr vowel/u#_7 [@] tr
[@] az [@] az
[u] sq [u] sq
[u] hy [u] hy
[u] da [u] da
[u] ka
[u] rw [u] rw
[u#] rw [u#] rw
[u] ne [u] ne
[u] pa [u] pa
[u] bg [u] bg
[u] ka
vowel/u_bck2 [u] fr vowel/u_bck2 [u] fr
[u:] fr [u:] fr
[u:] la [u:] la

+ 1
- 0
phsource/ph_dutch View File

phoneme e: phoneme e:
vowel starttype #e endtype #i vowel starttype #e endtype #i
length 190 length 190
ChangeIfUnstressed(@)
FMT(vdiph/ei) FMT(vdiph/ei)
endphoneme endphoneme



+ 5
- 6
phsource/ph_german View File

IF prevPhW(isVowel) THEN IF prevPhW(isVowel) THEN
ChangePhoneme(R) ChangePhoneme(R)
ELSE ELSE
// IF thisPh(isWordStart) THEN
// ELSE
IF prevPhW(isUStop) THEN
ChangePhoneme(R)
ELSE
InsertPhoneme(@-) InsertPhoneme(@-)
// ENDIF
ENDIF
ENDIF ENDIF
ENDIF ENDIF
ENDIF ENDIF
FMT(vnasal/aa_n4) FMT(vnasal/aa_n4)
endphoneme endphoneme




// translate from English to German phonemes // translate from English to German phonemes
equivalents en
equivalents NULL // disable this table
0 O 0 O
3 3 3 3
3: W : 3: W :

+ 5
- 3
phsource/phonemes View File

phonemetable da base phonemetable da base
include ph_danish include ph_danish


phonemetable ka base
include ph_georgian






phonemetable te hi phonemetable te hi
include ph_telugu include ph_telugu


phonemetable si hi
include ph_sinhala

phonemetable tn base phonemetable tn base
include ph_setswana include ph_setswana

phonemetable ka base
include ph_georgian

BIN
phsource/vowel/a#_4 View File


+ 3
- 1
src/Makefile View File





all: $(BIN_NAME) $(LIB_NAME) $(STATIC_LIB_NAME) $(BIN2_NAME) all: $(BIN_NAME) $(LIB_NAME) $(STATIC_LIB_NAME) $(BIN2_NAME)
mv $(LIB_NAME) $(LIB_NAME).$(LIBTAG)


.cpp.o: .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)\" -Wall -pedantic -I. -c -fno-exceptions $<
$(LIB_NAME): $(OBJS2) $(LIB_NAME): $(OBJS2)
$(CXX) $(LDFLAGS) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ \ $(CXX) $(LDFLAGS) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ \
$(OBJS2) $(LIBS2) $(OBJS2) $(LIBS2)
mv $(LIB_NAME) $(LIB_NAME).$(LIBTAG)
$(LN_SF) $(LIB_NAME).$(LIBTAG) $(LIB_NAME).$(LIB_VERSION)
$(LN_SF) $(LIB_NAME).$(LIB_VERSION) $(LIB_NAME)


$(STATIC_LIB_NAME): $(OBJS2) $(STATIC_LIB_NAME): $(OBJS2)
$(AR) cqs $(STATIC_LIB_NAME) $(OBJS2) $(AR) cqs $(STATIC_LIB_NAME) $(OBJS2)

+ 8
- 1
src/compiledata.cpp View File

{"isVowel", 0, phVOWEL}, {"isVowel", 0, phVOWEL},
{"isNasal", 0, phNASAL}, {"isNasal", 0, phNASAL},
{"isLiquid", 0, phLIQUID}, {"isLiquid", 0, phLIQUID},
{"isUStop", 0, phSTOP},
{"isVFricative", 0, phVFRICATIVE}, {"isVFricative", 0, phVFRICATIVE},


{"isPalatal", 0, i_isPalatal}, {"isPalatal", 0, i_isPalatal},


if((foreign_table = SelectPhonemeTableName(foreign_table_name)) < 0) if((foreign_table = SelectPhonemeTableName(foreign_table_name)) < 0)
{ {
error("Unknown phoneme table '%s'", foreign_table_name);
if(strcmp(foreign_table_name, "NULL") != 0)
{
error("Unknown phoneme table '%s'", foreign_table_name);
}
foreign_error = 1; foreign_error = 1;
foreign_phoneme = 0; foreign_phoneme = 0;
} }
if(strcmp(names[0],"endphoneme") == 0) if(strcmp(names[0],"endphoneme") == 0)
break; break;


if(foreign_error)
continue;

if(strcmp(names[0],"remove_stress") == 0) if(strcmp(names[0],"remove_stress") == 0)
{ {
remove_stress = 1; remove_stress = 1;

+ 1
- 1
src/compiledict.cpp View File

unsigned int char_code; unsigned int char_code;
int compile_mode=0; int compile_mode=0;
char *buf; char *buf;
char buf1[200];
char buf1[500];
char *rules[N_RULES]; char *rules[N_RULES];


int n_rgroups = 0; int n_rgroups = 0;

+ 3
- 3
src/dictionary.cpp View File

} }




int Unpronouncable(Translator *tr, char *word)
{//===========================================
int Unpronouncable(Translator *tr, char *word, int posn)
{//=====================================================
/* Determines whether a word in 'unpronouncable', i.e. whether it should /* Determines whether a word in 'unpronouncable', i.e. whether it should
be spoken as individual letters. be spoken as individual letters.


if((c==0) || (c==' ')) if((c==0) || (c==' '))
break; break;


if((c=='\'') && (count > 1))
if((c=='\'') && ((count > 1) || (posn > 0)))
break; // "tv'" but not "l'" break; // "tv'" but not "l'"


if(count==0) if(count==0)

+ 20
- 7
src/extras.cpp View File

char *pw; char *pw;
char *pw1; char *pw1;
int cc; int cc;
int ix;
int vcount; int vcount;
int lex_stress; int lex_stress;
int input_length; int input_length;
if(cc == 0xfeff) if(cc == 0xfeff)
continue; // ignore UTF-8 indication continue; // ignore UTF-8 indication


pw1 += utf8_out(cc, pw1); // copy UTF-8 to 'word_in'
if(cc == '`')
cc = '\'';
pw1 += utf8_out(towlower(cc), pw1); // copy UTF-8 to 'word_in'


if(lookupwchar(bg_vowels, cc) != 0) if(lookupwchar(bg_vowels, cc) != 0)
vcount++; vcount++;


if((cc == 0x300) || (cc == 0x450) || (cc == 0x45d))
if((cc == '\'') || (cc == 0x300) || (cc == 0x450) || (cc == 0x45d))
{ {
// combining grave accent, of accented vowel character
lex_stress = vcount;
// backprime (before the vowel), combining grave accent, or accented vowel character
if(cc == '\'')
lex_stress = vcount+1;
else
lex_stress = vcount;
n_stress++; n_stress++;


if(vcount == 1) if(vcount == 1)
stress_first = 1; stress_first = 1;


if(cc == 0x300)
continue; // discard combining accent
if((cc == '\'') || (cc == 0x300))
continue; // discard backprime or combining accent
if(cc == 0x450) if(cc == 0x450)
cc = 0x435; // remove accent from vowel cc = 0x435; // remove accent from vowel
if(cc == 0x45d) if(cc == 0x45d)
} }
} }


if(n_stress > 1) n_stress = 1;
done = 0; done = 0;

if(vcount < 2)
{
// don't list words with only one vowel
}
else
if((lex_stress != max_stress_posn) || (n_stress != 1)) if((lex_stress != max_stress_posn) || (n_stress != 1))
{ {
if((vcount > 0) && (lex_stress > 0) && (lex_stress <= 7)) if((vcount > 0) && (lex_stress > 0) && (lex_stress <= 7))
if(done == 0) if(done == 0)
{ {
n_wrong++; n_wrong++;
fprintf(f_out,"%s\t$text %s\n", &word[2], word_in);
fprintf(f_out,"// %s\t$text %s\n", &word[2], word_in);
} }


if(done) if(done)

+ 8
- 0
src/speak.cpp View File



#ifndef PLATFORM_DOS #ifndef PLATFORM_DOS
#ifdef PLATFORM_WINDOWS #ifdef PLATFORM_WINDOWS
#include <fcntl.h>
#include <io.h>
#include <windows.h> #include <windows.h>
#include <winreg.h> #include <winreg.h>
#else #else
return(2); return(2);


if(strcmp(path,"stdout")==0) if(strcmp(path,"stdout")==0)
{
#ifdef PLATFORM_WINDOWS
// prevent Windows adding 0x0d before 0x0a bytes
_setmode(_fileno(stdout), _O_BINARY);
#endif
f_wave = stdout; f_wave = stdout;
}
else else
f_wave = fopen(path,"wb"); f_wave = fopen(path,"wb");



+ 1
- 1
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.h" #include "wave.h"


const char *version_string = "1.45.02 15.Mar.11";
const char *version_string = "1.45.11 31.Mar.11";
const int version_phdata = 0x014500; const int version_phdata = 0x014500;


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

+ 28
- 1
src/tr_languages.cpp View File

memset(tr->letter_bits,0,sizeof(tr->letter_bits)); memset(tr->letter_bits,0,sizeof(tr->letter_bits));
SetLetterBitsRange(tr,LETTERGP_A,0x04,0x14); // vowel letters SetLetterBitsRange(tr,LETTERGP_A,0x04,0x14); // vowel letters
SetLetterBitsRange(tr,LETTERGP_A,0x3e,0x4d); // + vowel signs, and virama SetLetterBitsRange(tr,LETTERGP_A,0x3e,0x4d); // + vowel signs, and virama
SetLetterBitsRange(tr,LETTERGP_A,0x55,0x57); // + vowel signs


SetLetterBitsRange(tr,LETTERGP_B,0x3e,0x4d); // vowel signs, and virama SetLetterBitsRange(tr,LETTERGP_B,0x3e,0x4d); // vowel signs, and virama
SetLetterBitsRange(tr,LETTERGP_B,0x55,0x57); // + vowel signs


SetLetterBitsRange(tr,LETTERGP_C,0x15,0x39); // the main consonant range SetLetterBitsRange(tr,LETTERGP_C,0x15,0x39); // the main consonant range
SetLetterBits(tr,LETTERGP_C,dev_consonants2); // + additional consonants SetLetterBits(tr,LETTERGP_C,dev_consonants2); // + additional consonants


SetLetterBitsRange(tr,LETTERGP_Y,0x04,0x14); // vowel letters SetLetterBitsRange(tr,LETTERGP_Y,0x04,0x14); // vowel letters
SetLetterBitsRange(tr,LETTERGP_Y,0x3e,0x4c); // + vowel signs SetLetterBitsRange(tr,LETTERGP_Y,0x3e,0x4c); // + vowel signs
SetLetterBitsRange(tr,LETTERGP_Y,0x55,0x57); // + vowel signs


tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
tr->langopts.suffix_add_e = tr->letter_bits_offset + 0x4d; //virama tr->langopts.suffix_add_e = tr->letter_bits_offset + 0x4d; //virama
} }
break; break;


case L('s','i'): // Sinhala
{
SetupTranslator(tr,stress_lengths_ta,stress_amps_ta);
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable

tr->langopts.stress_rule = STRESSPOSN_1L;
tr->langopts.stress_flags = S_FINAL_DIM | S_NO_AUTO_DIM | S_FINAL_NO_2;
tr->langopts.spelling_stress = 1;

tr->letter_bits_offset = OFFSET_SINHALA;
memset(tr->letter_bits,0,sizeof(tr->letter_bits));
SetLetterBitsRange(tr,LETTERGP_A,0x05,0x16); // vowel letters
SetLetterBitsRange(tr,LETTERGP_A,0x4a,0x73); // + vowel signs, and virama
SetLetterBitsRange(tr,LETTERGP_B,0x4a,0x73); // vowel signs, and virama
SetLetterBitsRange(tr,LETTERGP_C,0x1a,0x46); // the main consonant range
tr->langopts.param[LOPT_UNPRONOUNCABLE] = 1; // disable check for unpronouncable words
tr->langopts.suffix_add_e = tr->letter_bits_offset + 0x4a; //virama
tr->langopts.numbers = NUM_OMIT_1_THOUSAND ;
}
break;

case L('s','l'): // Slovenian case L('s','l'): // Slovenian
tr->charset_a0 = charsets[2]; // ISO-8859-2 tr->charset_a0 = charsets[2]; // ISO-8859-2
tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary
tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable tr->langopts.stress_rule = 7; // stress on the last syllable, before any explicitly unstressed syllable
tr->langopts.stress_flags = 0x20; //no automatic secondary stress tr->langopts.stress_flags = 0x20; //no automatic secondary stress


tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_ALLOW_SPACE | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_2;
tr->langopts.numbers = NUM_SINGLE_STRESS | NUM_DECIMAL_COMMA | NUM_OMIT_1_HUNDRED | NUM_OMIT_1_THOUSAND | NUM_DFRACTION_2;
tr->langopts.max_initial_consonants = 2; tr->langopts.max_initial_consonants = 2;
} }
break; break;

+ 36
- 12
src/translate.cpp View File

return(1); return(1);
if(lookupwchar(extra_indic_alphas, c) != 0) if(lookupwchar(extra_indic_alphas, c) != 0)
return(1); return(1);
if((c >= 0xd7a) && (c <= 0xd7f))
return(1); // malaytalam chillu characters

return(0); return(0);
} }


} }




int IsAllUpper(const char *word)
{//=============================
int c;
while((*word != 0) && !isspace2(*word))
{
word += utf8_in(&c, word);
if(!iswupper(c))
return(0);
}
return(1);
}


static char *SpeakIndividualLetters(Translator *tr, char *word, char *phonemes, int spell_word) static char *SpeakIndividualLetters(Translator *tr, char *word, char *phonemes, int spell_word)
{//============================================================================================ {//============================================================================================
int posn = 0; int posn = 0;
length = 999; length = 999;
wordx = word1; wordx = word1;


while(((length < 3) && (length > 0))|| (word_length > 1 && Unpronouncable(tr,wordx)))
while(((length < 3) && (length > 0))|| (word_length > 1 && Unpronouncable(tr, wordx, posn)))
{ {
// This word looks "unpronouncable", so speak letters individually until we // This word looks "unpronouncable", so speak letters individually until we
// find a remainder that we can pronounce. // find a remainder that we can pronounce.


if(prefix_type & SUFX_B) if(prefix_type & SUFX_B)
{ {
// SUFX_B is used for Turkish, tr_rules contains "(Pb£
// retranslate the prefix part
// SUFX_B is used for Turkish, tr_rules contains " ' (Pb"
// examine the prefix part
char *wordpf; char *wordpf;
char prefix_phonemes2[12]; char prefix_phonemes2[12];


strncpy0(prefix_phonemes2,end_phonemes,sizeof(prefix_phonemes2)); strncpy0(prefix_phonemes2,end_phonemes,sizeof(prefix_phonemes2));
wordpf = &prefix_chars[1]; wordpf = &prefix_chars[1];
found = LookupDictList(tr, &wordpf, phonemes, dictionary_flags, SUFX_P, wtab); // without prefix
if(found == 0)
strcpy(prefix_phonemes, phonemes);

// look for stress marker or $abbrev
found = LookupDictList(tr, &wordpf, phonemes, dictionary_flags, 0, wtab);
if(found)
{ {
end_type = TranslateRules(tr, wordpf, phonemes, N_WORD_PHONEMES, end_phonemes, 0, dictionary_flags);
sprintf(prefix_phonemes,"%s%s%s",phonemes,end_phonemes,prefix_phonemes2);
strcpy(prefix_phonemes, phonemes);
}
if(dictionary_flags[0] & FLAG_ABBREV)
{
prefix_phonemes[0] = 0;
SpeakIndividualLetters(tr, wordpf, prefix_phonemes, 1);
} }
prefix_flags = 1;
} }
else else
{ {
{ {
// '-' between two letters is a hyphen, treat as a space // '-' between two letters is a hyphen, treat as a space
word_flags |= FLAG_HYPHEN; word_flags |= FLAG_HYPHEN;
words[word_count-1].flags |= FLAG_HYPHEN_AFTER;
if(word_count > 0)
words[word_count-1].flags |= FLAG_HYPHEN_AFTER;
c = ' '; c = ' ';
} }
} }
space_inserted = 1; space_inserted = 1;
} }
else else
if(!(words[word_count-1].flags & FLAG_NOSPACE) && IsAlpha(prev_in))
if((word_count > 0) && !(words[word_count-1].flags & FLAG_NOSPACE) && IsAlpha(prev_in))
{ {
// dot after a word, with space following, probably an abbreviation // dot after a word, with space following, probably an abbreviation
words[word_count-1].flags |= FLAG_HAS_DOT; words[word_count-1].flags |= FLAG_HAS_DOT;
// end of 'word' // end of 'word'
sbuf[ix++] = ' '; sbuf[ix++] = ' ';


if((ix > words[word_count].start) && (word_count < N_CLAUSE_WORDS-1))
if((word_count < N_CLAUSE_WORDS-1) && (ix > words[word_count].start))
{ {
if(embedded_count > 0) if(embedded_count > 0)
{ {
*pn++ = *pw++; *pn++ = *pw++;
} }
else else
if((*pw == tr->langopts.thousands_sep) && (pw[1] == ' ') && iswdigit(pw[2]))
if((*pw == tr->langopts.thousands_sep) && (pw[1] == ' ')
&& iswdigit(pw[2]) && (pw[3] != ' ') && (pw[4] != ' ')) // don't allow only 1 or 2 digits in the final part
{ {
pw += 2; pw += 2;
ix++; // skip "word" ix++; // skip "word"

+ 1
- 1
src/translate.h View File

void CalcPitches(Translator *tr, int clause_tone); void CalcPitches(Translator *tr, int clause_tone);


int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy); int RemoveEnding(Translator *tr, char *word, int end_type, char *word_copy);
int Unpronouncable(Translator *tr, char *word);
int Unpronouncable(Translator *tr, char *word, int posn);
void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int tonic, int prev_stress); void SetWordStress(Translator *tr, char *output, unsigned int *dictionary_flags, int tonic, int prev_stress);
int TranslateRules(Translator *tr, char *p, char *phonemes, int size, char *end_phonemes, int end_flags, unsigned int *dict_flags); int TranslateRules(Translator *tr, char *p, char *phonemes, int size, char *end_phonemes, int end_flags, unsigned int *dict_flags);
int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab); int TranslateWord(Translator *tr, char *word1, int next_pause, WORD_TAB *wtab);

+ 4
- 55
src/wave_pulse.cpp View File

static pa_stream *stream = NULL; static pa_stream *stream = NULL;
static pa_threaded_mainloop *mainloop = NULL; static pa_threaded_mainloop *mainloop = NULL;


static pa_cvolume volume;
static int volume_valid = 0;

static int do_trigger = 0; static int do_trigger = 0;
static uint64_t written = 0; static uint64_t written = 0;
static int time_offset_msec = 0; static int time_offset_msec = 0;
// SHOW("ti> read_index=0x%lx\n",the_time->read_index); // SHOW("ti> read_index=0x%lx\n",the_time->read_index);
// } // }



static void info_cb(struct pa_context *c, const struct pa_sink_input_info *i, int is_last, void *userdata) {
ENTER(__FUNCTION__);
assert(c);

if (!i)
return;

volume = i->volume;
volume_valid = 1;
}

static void subscribe_cb(struct pa_context *c, enum pa_subscription_event_type t, uint32_t index, void *userdata) { static void subscribe_cb(struct pa_context *c, enum pa_subscription_event_type t, uint32_t index, void *userdata) {
pa_operation *o;
ENTER(__FUNCTION__); ENTER(__FUNCTION__);
assert(c); assert(c);
(t != (PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE) && (t != (PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE) &&
t != (PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_NEW))) t != (PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_NEW)))
return; return;

if (!(o = pa_context_get_sink_input_info(c, index, info_cb, NULL))) {
SHOW("pa_context_get_sink_input_info() failed: %s\n", pa_strerror(pa_context_errno(c)));
return;
}
pa_operation_unref(o);
} }


static void context_state_cb(pa_context *c, void *userdata) { static void context_state_cb(pa_context *c, void *userdata) {


SHOW("pulse_write > length=%d\n", length); SHOW("pulse_write > length=%d\n", length);


CHECK_CONNECTED();
CHECK_CONNECTED_NO_RETVAL();


pa_threaded_mainloop_lock(mainloop); pa_threaded_mainloop_lock(mainloop);
CHECK_DEAD_GOTO(fail, 1); CHECK_DEAD_GOTO(fail, 1);
if (!pa_sample_spec_valid(&ss)) if (!pa_sample_spec_valid(&ss))
return false; return false;


/* if (!volume_valid) { */
pa_cvolume_reset(&volume, ss.channels);
volume_valid = 1;
/* } else if (volume.channels != ss.channels) */
/* pa_cvolume_set(&volume, ss.channels, pa_cvolume_avg(&volume)); */

SHOW_TIME("pa_threaded_mainloop_new (call)"); SHOW_TIME("pa_threaded_mainloop_new (call)");
if (!(mainloop = pa_threaded_mainloop_new())) { if (!(mainloop = pa_threaded_mainloop_new())) {
SHOW("Failed to allocate main loop\n",""); SHOW("Failed to allocate main loop\n","");
pa_stream_set_write_callback(stream, stream_request_cb, NULL); pa_stream_set_write_callback(stream, stream_request_cb, NULL);
pa_stream_set_latency_update_callback(stream, stream_latency_update_cb, NULL); pa_stream_set_latency_update_callback(stream, stream_latency_update_cb, NULL);




pa_buffer_attr a_attr; pa_buffer_attr a_attr;


a_attr.maxlength = MAXLENGTH; a_attr.maxlength = MAXLENGTH;
a_attr.fragsize = 0; a_attr.fragsize = 0;


SHOW_TIME("pa_connect_playback"); SHOW_TIME("pa_connect_playback");
if (pa_stream_connect_playback(stream, NULL, &a_attr, (pa_stream_flags_t)(PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE), &volume, NULL) < 0) {
if (pa_stream_connect_playback(stream, NULL, &a_attr, (pa_stream_flags_t)(PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE), NULL, NULL) < 0) {
SHOW("Failed to connect stream: %s", pa_strerror(pa_context_errno(context))); SHOW("Failed to connect stream: %s", pa_strerror(pa_context_errno(context)));
goto unlock_and_fail; goto unlock_and_fail;
} }
pa_threaded_mainloop_wait(mainloop); pa_threaded_mainloop_wait(mainloop);
} }


pa_operation_unref(o);

if (!success) { if (!success) {
SHOW("pa_context_subscribe() failed: %s", pa_strerror(pa_context_errno(context))); SHOW("pa_context_subscribe() failed: %s", pa_strerror(pa_context_errno(context)));
goto unlock_and_fail; goto unlock_and_fail;
} }


pa_operation_unref(o);

/* Now request the initial stream info */
if (!(o = pa_context_get_sink_input_info(context, pa_stream_get_index(stream), info_cb, NULL))) {
SHOW("pa_context_get_sink_input_info() failed: %s", pa_strerror(pa_context_errno(context)));
goto unlock_and_fail;
}
SHOW_TIME("pa_threaded_mainloop_wait 2");
while (pa_operation_get_state(o) != PA_OPERATION_DONE) {
CHECK_DEAD_GOTO(fail, 1);
pa_threaded_mainloop_wait(mainloop);
}

/* if (!volume_valid) { */
/* SHOW("pa_context_get_sink_input_info() failed: %s", pa_strerror(pa_context_errno(context))); */
/* goto unlock_and_fail; */
/* } */

do_trigger = 0; do_trigger = 0;
written = 0; written = 0;
time_offset_msec = 0; time_offset_msec = 0;
just_flushed = 0; just_flushed = 0;
connected = 1; connected = 1;
// volume_time_event = NULL;
pa_threaded_mainloop_unlock(mainloop); pa_threaded_mainloop_unlock(mainloop);
SHOW_TIME("pulse_open (ret true)"); SHOW_TIME("pulse_open (ret true)");
// return true;
return PULSE_OK; return PULSE_OK;



unlock_and_fail: unlock_and_fail:


if (o) if (o)

+ 1
- 1
src/wavegen.cpp View File

next = (fr2->fheight[ix] * v->height[ix]) << 6; next = (fr2->fheight[ix] * v->height[ix]) << 6;
peaks[ix].height_inc = ((next - peaks[ix].height1) * STEPSIZE) / length2; peaks[ix].height_inc = ((next - peaks[ix].height1) * STEPSIZE) / length2;


if(ix <= wvoice->n_harmonic_peaks)
if((ix <= 5) && (ix <= wvoice->n_harmonic_peaks))
{ {
peaks[ix].left1 = (fr1->fwidth[ix] * v->width[ix]) << 10; peaks[ix].left1 = (fr1->fwidth[ix] * v->width[ix]) << 10;
peaks[ix].left = int(peaks[ix].left1); peaks[ix].left = int(peaks[ix].left1);

Loading…
Cancel
Save