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

@@ -88,7 +88,7 @@
a (C_ A:
@) a (bl_ 'A:
@) a (bel_ 'A:
s) a (g A:Spionage
s) a (g A:
@l) a (g A:
schl) ag (ge A:k
scl) a (g A:

+ 30
- 19
dictsource/dict_phonemes View File

@@ -66,7 +66,7 @@ s S t T tS v w x
z Z


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

a A a: E e: i i: o
o: u u: Y y y: Y:
@@ -77,12 +77,12 @@ n n^ p r R R2 s S
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
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
f g g# h j k l m
@@ -100,7 +100,7 @@ p Q r R s s; t T
ts v x z z;


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

0 3 3: @ @- @2 @5 @L
a a# A: A@ aa aI aI@ aU
@@ -200,7 +200,7 @@ q r r. s S s. t T
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
I i: o o: u U u2 u:
@@ -325,7 +325,7 @@ k l m n p R s S
t tS v w x


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

8 @ @- a A a: A~ e
E E2 e: EI eU i I o
@@ -402,7 +402,7 @@ ts; v v; w w2 x z Z
z; Z;


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

8 @- a A e E E# E%
E2 i I I# I3 I^ ja ju
@@ -474,7 +474,7 @@ p R R^ s S t tS ts
v w x z Z


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

@ a e E i I o O
u U W y Y
@@ -533,18 +533,18 @@ s S t tS ts v w x
z Z


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

@ a a: aI aU e E e:
i I i: o o: r- u u:
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
@@ -609,7 +609,7 @@ s. t T t. th th. v x
z Z z.


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

@ a e i o u

@@ -713,7 +713,7 @@ R R3 s S t T tS ts
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
i: l- o o: r- u u: V
@@ -735,3 +735,14 @@ g h j k k# l m n
p p# Q q r s S t
t# tS ts ts# v w x 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

@@ -1623,6 +1623,7 @@ opposer @poUz3
orange 0rI2ndZ
orion 0r'aI@n
ordeal O@d'i@l
oregano 0rIg'A:noU
orphan O@f@n // orphaned
outage $1
outback $1
@@ -1888,6 +1889,7 @@ remedy rEm@dI
remit ri:mIt
remit ri:m'It $verb
remnant rEmn@nt
renal ri:n@L
rendevous r0ndI2vu:
rendezvous r0ndI2vu:
renegade rEn@geId

+ 1
- 0
dictsource/en_rules View File

@@ -3558,6 +3558,7 @@
_) o (Bal oU
XC) o (Bal oU
X) o (By oU
_) o (Cy+ 0
o (Be# oU
o (BeCo_ 0
o (BenC oU

+ 61
- 1
dictsource/hu_list View File

@@ -1668,11 +1668,71 @@ nyilatkozatok $unstressend
zajlott $unstressend
fordultak $unstressend
vették $unstressend
fordult $unstressend
épül $unstressend
bizonyítékok $unstressend
nyilvánításra $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


+ 8
- 1
dictsource/hu_rules View File

@@ -138,6 +138,8 @@ hierar) ch (i h
ma) ch (iná h
oligar) ch h
legpe) ch (es h:
mazo) ch (izm h
mazo) ch (is h

.group d
d d
@@ -279,6 +281,8 @@ standar) d (jegy d
mó) d (javaslat d
rekor) d (szint d
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
fogó) dz (kod ts
@@ -1046,6 +1050,7 @@ rongyo) szs (ák SZ
rava) sz (ár s
_ka) sztsze st|sE
szemete) szs (ák SZ
dro) sztsze (rző st|sE //drosztszerződés word need spokening st and single sE phoneme

.group t
t t
@@ -1100,6 +1105,7 @@ használ) t (cikk t
ha) t (cell t //for example hatcellás, hatcella word need spokening t before c letter.
pár) t (székház t


.group tj
C) tj c
kür) tj c
@@ -1288,7 +1294,7 @@ felada) ts (or t|S
ada) ts t|S //for example adatsor, adatsebesség words
ada) tsz t|s //for example adatszolgáltatás word
gondola) ts (or t|S
művele) ts (or t|S
művele) ts (o t|S
tábláza) ts (or t|S
vizsgála) ts (or t|S
állapo) ts (or t|S
@@ -1363,6 +1369,7 @@ terüle) ts (áv t|S
gyakorla) ts (oroz t|S
támogato) ts (ág tS:


.group tt
tt t:
ttgy t:J

+ 21
- 2
dictsource/nl_list View File

@@ -343,6 +343,23 @@ websites _^_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

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

+ 29
- 2
dictsource/nl_rules View File

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


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

_) ge (@P2 Q@
ge (bied Q@
_) gee Qe:
gener (aal Q,e:n@r
_) gelijk Q@lEIk
@@ -258,6 +270,8 @@

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


@@ -290,7 +304,11 @@
ie (rd_ 'i
@) ig (_S2dq @x
@) ige (_ @Q@
@) igen (_ @Q@n
@) igen (_ @Q@n
@) iger (_ @Q@r
@) igere (_ @Q@r@
@) igst (_ @Qst
@) igste (_ @Qst@
ij (_ 'EI
ij (e_ 'EI
@) ij (n_ 'EI
@@ -325,6 +343,10 @@
&) lijk (_S4 l@k
&) lijke (_S5 l@k@
&) 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
_) lange (@P5 laN@
@) loog (_ lo:x
@@ -354,9 +376,11 @@
_) na (C@@P2 n'a:
_) na (tion na:
_) na (der na:
_) natuur na:t'yr
_) noord (@P5 no:rd
_) nieuws (@P6 n'iws
@@) nis (_@S3 nIs
@@) nisen (_@S5 nIs@n


.group o
@@ -548,6 +572,7 @@
_) uit (@P3 'Wyt
u (re_ 'y
@) ute (_ 'yt
uu (r_ 'y


.group v
@@ -559,6 +584,7 @@
_) ver (@P3 v@r
_) ver (sie_ vEr
_) verder vErd@r
_) verge (le v@rQ'e:
_) voort (@P5 v'O:rt


@@ -597,5 +623,6 @@
$ d'OlAr
, (D k'Oma:
__) - (_D m'In
@) 's (_S2 s



+ 2
- 2
dictsource/ru_list View File

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

+ 41
- 3
dictsource/ta_rules View File

@@ -42,7 +42,6 @@
ோ ோ
ௌ ௌ


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

@@ -62,7 +61,10 @@
.L06 க ஹ

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

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


// consonants
@@ -117,6 +119,7 @@
_) க (தியில் gV
_) க (தியை gV
_) க (ந்தர்வ gV
_) க (னக்க gV
_) க (னத் gV
_) க (னம gV
_) கப் (L04ா gVp
@@ -248,6 +251,7 @@
_) க (ுருக்கள g
_) க (ுருக்குல g
_) க (ுருசாமி g
_) க (ுருஜி g
_) க (ுருதேவ g
_) க (ுருநா g
_) க (ுருபூஜை g
@@ -416,6 +420,7 @@ _சந்திரி) க (ா k
_மாளவி) க (ா k
_மோனி) க (ா k
_மௌனி) க (ா k
_ஸ்ரீலங்) க (ா k
_ஹன்L04ி) க (ா k
_ஹாங்) க (ாங் k
_தென்) க (ாசி k
@@ -534,6 +539,7 @@ _கவிதா) க்க (ினி gg
கு) க்கி (ராம gg
அ) க்கி (ராம gg
இ) க்கி (ராம gg
L03) க்க (ுகை gg
_மு) க்க (ுண gg
அணு) க்க (ுண்ட gg
_துப்பாக்கி) க்க (ுண்ட gg
@@ -558,6 +564,7 @@ _துப்பாக்கி) க்க (ுண்ட gg
_செ) க்யூரிட (ி kjU:rit.
_ச) க்ரப (ாணி krVp
வி) க (்ரம k
_ரெ) க்ரூட் krU:t.
ஆ) க (்ரோஷ k
_பை) க் (ல_ k
என்சை) க்லோப (ீடியா klo:p
@@ -628,7 +635,9 @@ _தணிகா) ச (ல tSV
_) சாக்லேட் tSa:kle:t.
_) ச (ாணக்கிய tS
ச (ாந்தி s.
_) ச (ாந்தின tS
_தே) ச (ாந்திர s
_) ச (ாந்தில tS
_) ச (ான்ஸ tS
_) சாப் (ளின tSa:p
_) ச (ாமுண்ட tS
@@ -704,6 +713,7 @@ _தணிகா) ச (ல tSV
இராவணே) சு (வர s
ராவணே) சு (வர s
_) சுவர்க்க svVrggV#
_) சுவர்க்க (ோழி suvVrgg
_) சு (வாச s
சு (வாதீன s
சு (வாமி s
@@ -726,10 +736,15 @@ _தணிகா) ச (ல tSV
_) செயின்ட sejint.V#
_) ச (ெய்ன tS
_) செய்ன்ட sejnt.V#
_) ச (ெர்னோபில tS
_) ச (ெல்லக்குட்டி tS
_) ச (ெல்லத்துக்கு tS
_) ச (ெல்லத்தை tS
_) ச (ெல்லப்ப tS
_) ச (ெல்லப்பன tS
_) ச (ெல்லப்பா tS
_) ச (ெல்லப்பிள்ளை tS
_) ச (ெல்லப்பெண் tS
_) ச (ெல்லப்பையன tS
_) ச (ெல்லமா tS
_) ச (ெஸ் tS
_) ச (ேஞ்ச tS
@@ -777,6 +792,7 @@ _ரிப்போர்) ட t.V#
அர்ஜண்) ட t.V#
அர்ஜெண்) ட t.V#
இண்டர்மீடியே) ட t.V#
_) ட (ஃப் t.V
_) ட (க்கர t.V
ங்) ட (ன t.V // -ington
_நியூ) ட (ன t.V
@@ -816,6 +832,8 @@ _ரிப்போர்) ட t.V#
_) டாட (ா t.a:t.
_) ட (ான்சானிய t.
_) ட (ான்ஜானிய t.
_) டாபிக் t.a:pik
_) ட (ாமி t.
அண்) டார்டிக t.a:rt.ikV#
_) ட (ாலமி t.
_) ட (ால்ஸ்டாய t.
@@ -847,6 +865,7 @@ _நாவல்) ட (ி t.
_) டிர (ஸ d.re
_) டிர (ஸ்ட t.rV
_) டிராஃபிக் t.ra:fik
_) டி (ராகுலா d.
_) டிராக் t.ra:k
_காண்) டி (ராக்டர t.
_) டி (ராஜ t.
@@ -865,8 +884,10 @@ _நாவல்) ட (ி t.
_) டி (ராவல t.
_) டி (ராவெல t.
_) டிரிக (ர t.riggV
_) டிரிக் t.rik
_) டிரிக்க (ர t.riggV
_) டி (ரிம் t.
_) டிரீட் t.ri:t.
_) டிரெயி(லர t.rej
_) டி (ரெயின t.
_) டி (ரெய்லர t.
@@ -921,6 +942,7 @@ _லான்_) ட (ென்னிஸ t.
_) ட (ோக்கியோ t.
_) டோரண்ட (ோ t.o:rVn.t.
_ப்ரி) ட (ோரிய t.
@மெண்) ட் t. // -ment
இண்டர்நெ) ட் t.
_ல) ட்ட d.d.V#
_ரெ) ட்ட (ியா d.d.
@@ -953,8 +975,10 @@ _லான்_) ட (ென்னிஸ t.
_) ட் (ராவல t.
_) ட் (ராவெல t.
_) ட்ரிக (ர t.riggV
_) ட்ரிக் t.rik
_) ட்ரிக்க (ர t.riggV
_) ட் (ரிம் t.
_) ட்ரீட் t.ri:t.
_வி) ட் (ரு t.
_கே) ட் (ரு t.
_போ) ட் (ரு t.
@@ -976,6 +1000,7 @@ _லான்_) ட (ென்னிஸ t.
_கூ) ட் (ல t.
_நா) ட் (ல t.
_பா) ட் (ல t.
_மே) ட் (ல t.
_ரூ) ட் (ல t.
_நோ) ட் (ல t.
_ரோ) ட் (ல t.
@@ -1084,6 +1109,7 @@ _நடுரோ) ட் (ல t.
_) த (ருமத் dV
_) த (ருமன dV
_) தருமப (ுரி dVrUmVp
_) த (ருமம dV
_) த (ருமர dV
_) த (ருமி dV
_) த (ர்க dV
@@ -1214,6 +1240,7 @@ _நடுரோ) ட் (ல t.
_) த (ுச்சாதனன d
_) த (ுட்ட d
_) த (ுபாய d
_) த (ுபாஷி d
_) த (ுப்பட்டா d
_) த (ுமளி d
_) த (ுரதிருஷ்ட d
@@ -1309,10 +1336,12 @@ _வசந்) த tV#
_சீ) த (ா t
_ல) த (ா t
_சபி) த (ா t
_சபீ) த (ா t
அனி) த (ா t
சுஜா) த (ா t
லலி) த (ா t
_சுனி) த (ா t
_ஹரி) த (ா t
_வனி) த (ா t
_வினி) த (ா t
_நிவேதி) த (ா t
@@ -1330,6 +1359,7 @@ _புஷ்பல) த (ா t
வாசந்) த (ி t
_கோம) த (ி t
ஜெயந்) த (ி t
_துஷ்யந்) த (ி t
_பார்வ) த (ி t
_பிரசார்_பார) த (ி t
பிரபாவ) த (ி t
@@ -1529,6 +1559,7 @@ _சொந்த_) ப (ந்த bV
_) ப (லப்பரீட்சை bV
_) ப (லம bV
_) ப (லமடங்க pV
_) ப (லமாடி pV
_) ப (லமுறை pV
_) ப (லமொழி pV
_) ப (லராம bV
@@ -1589,6 +1620,7 @@ _சொந்த_) ப (ந்த bV
_) ப (ாணமு b
_) ப (ாணி b
_) ப (ாதிக்க b
_) ப (ாதிக்கண் p
_) ப (ாதிக்கு_ p
_) ப (ாதிக்கும்_குறை p
_) ப (ாதிக்கும்_மேற் p
@@ -1632,6 +1664,7 @@ _சொந்த_) ப (ந்த bV
_) ப (ாலக்காட p
_) ப (ாலச b
_) ப (ாலதண் b
_) ப (ாலன b
_) பாலப (ாட ba:lVp
_) ப (ாலமுர b
_) ப (ாலய்யா b
@@ -1896,6 +1929,7 @@ _பெனசீர்_) ப (ுட்டோ b
_) புரப (L04ர profV
_) புரபொ (சர profV
_) பு (ரவுச b
_) ப (ுருடா b
_) புரொப (சர profV
_) புரொபொ (சர profV
_) ப (ுரோக்கர b
@@ -1968,7 +2002,9 @@ _பெனசீர்_) ப (ுட்டோ b
_) ப (ொம்மன b
_) ப (ொம்மல b
_) ப (ொம்மை b
_) ப (ோக_L11 b
_) ப (ோகங்க b
_) ப (ோகத்த b
_) ப (ோகத்திற்க b
_) ப (ோகத்தில b
_) ப (ோகத்துக்க b
@@ -2111,6 +2147,7 @@ _சொந்த) ப (ந்த bV
_ஒலி) ப (ரப் pV
_ஒளி) ப (ரப் pV
வீர) ப (ராக்கிரம pV
_மறு) ப (ரிசீலனை pV
ஆ) ப (ரேசன pV
ஆ) ப (ரேஷன pV
_கார்) ப (ரேஷன pV
@@ -2339,6 +2376,7 @@ _ஞானப்) பிரக (ா prVk
_லாக) ப் p
ஆ) ப் (கானிய f
ஆ) ப் (கானிஸ்தான f
_பா) ப்க (ார்ன pk
_லி) ப் (ட f
_மைக்ரோசா) ப் (ட f
கர்) ப்ப bbV#

+ 149
- 21
dictsource/tr_list View File

@@ -118,6 +118,53 @@ _0M3 miljar
_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

// conjunctions
@@ -127,39 +174,120 @@ veya $u $brk // or
ama $brk $1 // but
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
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
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

@@ -20,7 +20,7 @@

@) a (_S1 a

@) acak (_S3 adZak
@) acak (_S4 adZak
@) acakmış (_S7 adZakm%@S
@) ayım (_S4 aj@m
@) alım (_S4 al@m
@@ -130,7 +130,7 @@
@) ı (_S1 @

@) ım (_S2 %@m
@) ınız (_S2 %@n@z
@) ınız (_S4 %@n@z
@) ız (_S2 %@z
@) ıyor (_S4 @j%oR
@) ın (_S2 @n
@@ -179,6 +179,11 @@
.group n
n n

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

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

+ 30
- 14
phsource/compile_report View File

@@ -1,4 +1,4 @@
73 phoneme tables
74 phoneme tables
new total
base 107 107
consonants 10 116
@@ -55,6 +55,7 @@ consonants 10 116
sq 33 126
hy 23 117
da 27 120
ka 19 112
rw 15 130
ml 18 151
ne 18 157
@@ -71,8 +72,8 @@ consonants 10 116
wo 18 118
dv 14 150
te 16 150
si 24 156
tn 27 119
ka 19 112

Data file Used by
b/b [b] base
@@ -360,7 +361,7 @@ l/l_ [l] base
[l/] fr
l/l_@ [l/3] base
[l/] fr
l/l@ [h–x] base
l/l@ [hF|] base
[l#] base
[l] fr
[l/2] fr
@@ -394,7 +395,7 @@ l/L2_oL [l/2] base
l/L2_uL [l/2] base
l/l_3 [l/] de
l/l_4 [ll] sq
l/la [h–x] base
l/la [hF|] base
[l#] base
[l] fr
[l/2] fr
@@ -402,7 +403,7 @@ l/la [h
[K] tn
l/l_a [l/3] base
[l/] fr
l/le [h–x] base
l/le [hF|] base
[l#] base
[l] fr
[l/2] fr
@@ -414,7 +415,7 @@ l/L_eL_af [&] af
[&:] af
l/l_front [L] sq
l/l_front_ [l/4] sq
l/li [h–x] base
l/li [hF|] base
[l#] base
[l] fr
[l/2] fr
@@ -428,7 +429,7 @@ ll/ll [L] bg
ll/_ll [L] bg
l/l_long [l] base
[l] fr
l/lo [h–x] base
l/lo [hF|] base
[l#] base
[l/2] fr
[K] nso
@@ -438,7 +439,7 @@ l/l_o [l/3] base
l^/l_rfx [l.] base
[l] ru
[l^] ru
l/lu [h–x] base
l/lu [hF|] base
[l#] base
[l] fr
[l/2] fr
@@ -1041,6 +1042,7 @@ vdiph/ai_7 [aI] en-sc
[aI:] is
vdiph/ai_8 [aI] ta
[aI] dv
[aI] si
vdiph/aoo [aU] en-us
[aU] it
vdiph/au [aU] en
@@ -1048,6 +1050,7 @@ vdiph/au [aU] en
[aU] ta
[a:U] vi
[aU] prs
[aU] si
vdiph/au# [aU] en-sc
vdiph/au_2 [au] zhy
vdiph/au_3 [aU] en-rp
@@ -1295,11 +1298,11 @@ vowel/@ [@] base
[@4] hi
[@] kn
[@] hy
[@] ka
[@] sl
[@] wo
[@:] wo
[@] te
[@] ka
vowel/@- [@-] base
[r*] hr
vowel/& [a] en-rp
@@ -1410,10 +1413,11 @@ vowel/a#_2 [a] kn
[a] sv
[a] is
[a/] sw
[a] ka
[a] ml
[a] nso
[a] te
[a] ka
[a] si
vowel/a_3 [a] en-sc
[a/] en-sc
[A:] en-sc
@@ -1426,6 +1430,7 @@ vowel/a_3 [a] en-sc
[A] zh
[a] sq
[A] da
[a:] si
vowel/a#_3 [a#] en
[a#] en-n
[a#] en-us
@@ -1596,6 +1601,8 @@ vowel/ee_5 [E] en
vowel/ee_6 [&] sk
[E3] sv
[E] ku
[&] si
[&:] si
vowel/e_mid [E] en-rp
[E] fr
[E~] fr
@@ -1619,10 +1626,11 @@ vowel/e_mid [E] en-rp
[E] id
[E2] id
[e] hy
[e] ka
[E] prs
[e] bg
[E] ht
[e] ka
[e] si
vowel/e_mid2 [E] af
[E] de
[E2] de
@@ -1645,6 +1653,7 @@ vowel/e_mid2 [E] af
[e] az
[e] am
[e] te
[e:] si
vowel/@_fnt [@] en-wi
[@2] en-wi
[@2] hr
@@ -1671,6 +1680,7 @@ vowel/i [i] base
[i] zh
[i] sw
[i] hy
[i] ka
[i] rw
[i#] rw
[i:] ml
@@ -1682,7 +1692,7 @@ vowel/i [i] base
[i:] wo
[i:] dv
[i:] te
[i] ka
[i:] si
vowel/i# [y:] cy
vowel/i_2 [i2] de
[i:] de
@@ -1715,6 +1725,7 @@ vowel/i_6 [i] hi
[i] bg
[i] dv
[i] te
[i] si
vowel/i#_6 [i.] zh
vowel/i_7 [i] pl
[i] sq
@@ -1798,6 +1809,7 @@ vowel/@_low [@] en-rp
[@] pa
[V] pa
[@] am
[@] si
vowel/@_low2 [@/] en-us
[@2] en-us
vowel/o [o] base2
@@ -1902,8 +1914,10 @@ vowel/oo_1 [O:] en-n
[o] hr
[o/] it
[O] sq
[O] tn
[o] ka
[o] si
[o:] si
[O] tn
vowel/oo_2 [0] en-sc
[O] cy
[o] cs
@@ -1987,6 +2001,8 @@ vowel/u_6 [u:] en-rp
[u:] dv
[u] te
[u:] te
[u] si
[u:] si
vowel/u_7 [u] vi
vowel/u#_7 [@] tr
[@] az
@@ -2012,12 +2028,12 @@ vowel/u_bck [u] base2
[u] sq
[u] hy
[u] da
[u] ka
[u] rw
[u#] rw
[u] ne
[u] pa
[u] bg
[u] ka
vowel/u_bck2 [u] fr
[u:] fr
[u:] la

+ 1
- 0
phsource/ph_dutch View File

@@ -113,6 +113,7 @@ endphoneme
phoneme e:
vowel starttype #e endtype #i
length 190
ChangeIfUnstressed(@)
FMT(vdiph/ei)
endphoneme


+ 5
- 6
phsource/ph_german View File

@@ -328,10 +328,11 @@ phoneme r
IF prevPhW(isVowel) THEN
ChangePhoneme(R)
ELSE
// IF thisPh(isWordStart) THEN
// ELSE
IF prevPhW(isUStop) THEN
ChangePhoneme(R)
ELSE
InsertPhoneme(@-)
// ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
@@ -403,10 +404,8 @@ phoneme A~
FMT(vnasal/aa_n4)
endphoneme



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

+ 5
- 3
phsource/phonemes View File

@@ -1800,6 +1800,8 @@ include ph_armenian
phonemetable da base
include ph_danish

phonemetable ka base
include ph_georgian



@@ -1867,8 +1869,8 @@ include ph_divehi
phonemetable te hi
include ph_telugu

phonemetable si hi
include ph_sinhala

phonemetable tn base
include ph_setswana

phonemetable ka base
include ph_georgian

BIN
phsource/vowel/a#_4 View File


+ 3
- 1
src/Makefile View File

@@ -75,7 +75,6 @@ CXXFLAGS=-O2


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

.cpp.o:
$(CXX) $(CXXFLAGS) $(USE_AUDIO) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c -fno-exceptions $<
@@ -95,6 +94,9 @@ x_%.o: %.cpp
$(LIB_NAME): $(OBJS2)
$(CXX) $(LDFLAGS) -shared $(SONAME_OPT)$(LIB_NAME).$(LIB_VERSION) -o $@ \
$(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)
$(AR) cqs $(STATIC_LIB_NAME) $(OBJS2)

+ 8
- 1
src/compiledata.cpp View File

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

{"isPalatal", 0, i_isPalatal},
@@ -3205,7 +3206,10 @@ static void CompileEquivalents()

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_phoneme = 0;
}
@@ -3234,6 +3238,9 @@ static void CompileEquivalents()
if(strcmp(names[0],"endphoneme") == 0)
break;

if(foreign_error)
continue;

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

+ 1
- 1
src/compiledict.cpp View File

@@ -1639,7 +1639,7 @@ static int compile_dictrules(FILE *f_in, FILE *f_out, char *fname_temp)
unsigned int char_code;
int compile_mode=0;
char *buf;
char buf1[200];
char buf1[500];
char *rules[N_RULES];

int n_rgroups = 0;

+ 3
- 3
src/dictionary.cpp View File

@@ -781,8 +781,8 @@ static int Unpronouncable2(Translator *tr, char *word)
}


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
be spoken as individual letters.

@@ -817,7 +817,7 @@ int Unpronouncable(Translator *tr, char *word)
if((c==0) || (c==' '))
break;

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

if(count==0)

+ 20
- 7
src/extras.cpp View File

@@ -913,6 +913,7 @@ void Lexicon_Bg()
char *pw;
char *pw1;
int cc;
int ix;
int vcount;
int lex_stress;
int input_length;
@@ -1006,22 +1007,27 @@ void Lexicon_Bg()
if(cc == 0xfeff)
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)
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++;

if(vcount == 1)
stress_first = 1;

if(cc == 0x300)
continue; // discard combining accent
if((cc == '\'') || (cc == 0x300))
continue; // discard backprime or combining accent
if(cc == 0x450)
cc = 0x435; // remove accent from vowel
if(cc == 0x45d)
@@ -1062,7 +1068,14 @@ void Lexicon_Bg()
}
}

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

if(vcount < 2)
{
// don't list words with only one vowel
}
else
if((lex_stress != max_stress_posn) || (n_stress != 1))
{
if((vcount > 0) && (lex_stress > 0) && (lex_stress <= 7))
@@ -1082,7 +1095,7 @@ void Lexicon_Bg()
if(done == 0)
{
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)

+ 8
- 0
src/speak.cpp View File

@@ -27,6 +27,8 @@

#ifndef PLATFORM_DOS
#ifdef PLATFORM_WINDOWS
#include <fcntl.h>
#include <io.h>
#include <windows.h>
#include <winreg.h>
#else
@@ -234,7 +236,13 @@ static int OpenWaveFile(const char *path, int rate)
return(2);

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


+ 1
- 1
src/synthdata.cpp View File

@@ -35,7 +35,7 @@
#include "translate.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;

int option_device_number = -1;

+ 28
- 1
src/tr_languages.cpp View File

@@ -308,14 +308,17 @@ void SetIndicLetters(Translator *tr)
memset(tr->letter_bits,0,sizeof(tr->letter_bits));
SetLetterBitsRange(tr,LETTERGP_A,0x04,0x14); // vowel letters
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,0x55,0x57); // + vowel signs

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

SetLetterBitsRange(tr,LETTERGP_Y,0x04,0x14); // vowel letters
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.suffix_add_e = tr->letter_bits_offset + 0x4d; //virama
@@ -1090,6 +1093,30 @@ SetLengthMods(tr,3); // all equal
}
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
tr->charset_a0 = charsets[2]; // ISO-8859-2
tr->langopts.stress_rule = STRESSPOSN_2R; // Temporary
@@ -1223,7 +1250,7 @@ SetLengthMods(tr,3); // all equal
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.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;
}
break;

+ 36
- 12
src/translate.cpp View File

@@ -386,6 +386,9 @@ int IsAlpha(unsigned int c)
return(1);
if(lookupwchar(extra_indic_alphas, c) != 0)
return(1);
if((c >= 0xd7a) && (c <= 0xd7f))
return(1); // malaytalam chillu characters

return(0);
}

@@ -577,6 +580,19 @@ char *strchr_w(const char *s, int c)
}


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)
{//============================================================================================
int posn = 0;
@@ -1022,7 +1038,7 @@ if((wmark > 0) && (wmark < 8))
length = 999;
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
// find a remainder that we can pronounce.
@@ -1176,20 +1192,26 @@ if((wmark > 0) && (wmark < 8))

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 prefix_phonemes2[12];

strncpy0(prefix_phonemes2,end_phonemes,sizeof(prefix_phonemes2));
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
{
@@ -2772,7 +2794,8 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
{
// '-' between two letters is a hyphen, treat as a space
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 = ' ';
}
}
@@ -2809,7 +2832,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
space_inserted = 1;
}
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
words[word_count-1].flags |= FLAG_HAS_DOT;
@@ -2930,7 +2953,7 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
// end of 'word'
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)
{
@@ -3056,7 +3079,8 @@ if((c == '/') && (tr->langopts.testing & 2) && IsDigit09(next_in) && IsAlpha(pre
*pn++ = *pw++;
}
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;
ix++; // skip "word"

+ 1
- 1
src/translate.h View File

@@ -658,7 +658,7 @@ void CalcLengths(Translator *tr);
void CalcPitches(Translator *tr, int clause_tone);

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

+ 4
- 55
src/wave_pulse.cpp View File

@@ -80,9 +80,6 @@ static pa_context *context = NULL;
static pa_stream *stream = NULL;
static pa_threaded_mainloop *mainloop = NULL;

static pa_cvolume volume;
static int volume_valid = 0;

static int do_trigger = 0;
static uint64_t written = 0;
static int time_offset_msec = 0;
@@ -131,20 +128,7 @@ do { \
// 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) {
pa_operation *o;
ENTER(__FUNCTION__);
assert(c);
@@ -154,13 +138,6 @@ static void subscribe_cb(struct pa_context *c, enum pa_subscription_event_type t
(t != (PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_CHANGE) &&
t != (PA_SUBSCRIPTION_EVENT_SINK_INPUT|PA_SUBSCRIPTION_EVENT_NEW)))
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) {
@@ -367,7 +344,7 @@ static void pulse_write(void* ptr, int length) {

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

CHECK_CONNECTED();
CHECK_CONNECTED_NO_RETVAL();

pa_threaded_mainloop_lock(mainloop);
CHECK_DEAD_GOTO(fail, 1);
@@ -481,12 +458,6 @@ static int pulse_open()
if (!pa_sample_spec_valid(&ss))
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)");
if (!(mainloop = pa_threaded_mainloop_new())) {
SHOW("Failed to allocate main loop\n","");
@@ -539,8 +510,6 @@ static int pulse_open()
pa_stream_set_write_callback(stream, stream_request_cb, NULL);
pa_stream_set_latency_update_callback(stream, stream_latency_update_cb, NULL);



pa_buffer_attr a_attr;

a_attr.maxlength = MAXLENGTH;
@@ -550,7 +519,7 @@ static int pulse_open()
a_attr.fragsize = 0;

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)));
goto unlock_and_fail;
}
@@ -578,44 +547,24 @@ static int pulse_open()
pa_threaded_mainloop_wait(mainloop);
}

pa_operation_unref(o);

if (!success) {
SHOW("pa_context_subscribe() failed: %s", pa_strerror(pa_context_errno(context)));
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;
written = 0;
time_offset_msec = 0;
just_flushed = 0;
connected = 1;
// volume_time_event = NULL;
pa_threaded_mainloop_unlock(mainloop);
SHOW_TIME("pulse_open (ret true)");
// return true;
return PULSE_OK;


unlock_and_fail:

if (o)

+ 1
- 1
src/wavegen.cpp View File

@@ -1796,7 +1796,7 @@ if(option_log_frames)
next = (fr2->fheight[ix] * v->height[ix]) << 6;
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].left = int(peaks[ix].left1);

Loading…
Cancel
Save