Browse Source

[1.31.18]

Indicate unrecognized letters within a word by clicks.
lang-tr: Non-standard lower case conversion for "I".
Tone languages: indicate emphasis by increasing the pitch range.


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@151 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 17 years ago
parent
commit
16fba5a1c1

+ 6
- 2
dictsource/af_list View File

potchefstroom pOtSIfstr'o@m potchefstroom pOtSIfstr'o@m
pretoria prit'o@ria pretoria prit'o@ria
stellenbosch st%&l@mbOs stellenbosch st%&l@mbOs
swellendam $3
tunisië $2 tunisië $2
turkye $2 turkye $2
upington apiNt@n upington apiNt@n
debora d@bo@ra debora d@bo@ra
debussy d@bus'i: debussy d@bus'i:
der d@r der d@r
derick dErik
deventer d'e@v@nt@r deventer d'e@v@nt@r
du $u du $u
(du pisanie) du||pis'A:ni (du pisanie) du||pis'A:ni
stephan ste@fan stephan ste@fan
stephanus st@fA:nWs stephanus st@fA:nWs
strauss straUs strauss straUs
suzanne suz'A:n
suzette suz'Et
tania tanja tania tanja
telemann te@l@man telemann te@l@man
terblanche t@rblA:nS terblanche t@rblA:nS
ekstra Ekstra ekstra Ekstra
elders &ld@rs elders &ld@rs
elite il'i:t elite il'i:t
encore A~NkO:r
enige e@nIx2@ enige e@nIx2@
eone $2 eone $2
era e@ra era e@ra
finaliste $3 finaliste $3
fort fOrt fort fOrt
forte fOrt@ forte fOrt@
frontaal $2
frontale $2


g'n x2In g'n x2In
gaandeweg x2A:nd@v&x2 gaandeweg x2A:nd@v&x2
onmin $1 onmin $1
oorleg $2 oorleg $2
oorstroom $2 oorstroom $2
oorwaai $1
oplaas $2 oplaas $2
onraad $1 onraad $1
onrus $1 onrus $1

+ 19
- 6
dictsource/af_rules View File

ara (bi %arA: // fix 1st a sound and stress: Arabië/Arabies/-e ara (bi %arA: // fix 1st a sound and stress: Arabië/Arabies/-e
ara (bier %ar%a // Stress and a sounds: Arabier/-e ara (bier %ar%a // Stress and a sounds: Arabier/-e
C) are (CA A:r@ // e sound: amptenaredom/blaredak/garebiltong/haredos/jarelange C) are (CA A:r@ // e sound: amptenaredom/blaredak/garebiltong/haredos/jarelange
amarula %am%arul%a // fix stress and a sounds: amarula and compounds
a (riA 'A: // akwarium/barium/estuarium/herbarium/seminaria a (riA 'A: // akwarium/barium/estuarium/herbarium/seminaria
a (ristokr %a // shorten 1st a: aristokrasie/-kraat/-krate/-kraties a (ristokr %a // shorten 1st a: aristokrasie/-kraat/-krate/-kraties
@C) as (_ as // shorten final a of words ending in -as: rigtingvas/jonkmanskas, etc. @C) as (_ as // shorten final a of words ending in -as: rigtingvas/jonkmanskas, etc.
bota (nie_N b%o@t%a // stress on 3rd slb.: botanie bota (nie_N b%o@t%a // stress on 3rd slb.: botanie
_) bowe b''o@v@ // fix e sound in compounds: boweaards/bowemaans/bowetoon _) bowe b''o@v@ // fix e sound in compounds: boweaards/bowemaans/bowetoon
_) breda br@dA: // move default stress: (van )Breda/Bredasdorp _) breda br@dA: // move default stress: (van )Breda/Bredasdorp
bril (jant br@l // move default stress: briljant/-e/-heid/-ste
bru (ta br%y // move default stress: brutaal/brutale/brutaliteit bru (ta br%y // move default stress: brutaal/brutale/brutaliteit
buffe (t b%WfE // fix stress and e sound: buffet/-te/buffetete, etc. buffe (t b%WfE // fix stress and e sound: buffet/-te/buffetete, etc.
buiten (ge b'Yyt@n // buitengewoon/s/buitengewone/buitengemeen buiten (ge b'Yyt@n // buitengewoon/s/buitengewone/buitengemeen
di (ploma d@ // move default stress: diploma/-s and compounds/diplomaat di (ploma d@ // move default stress: diploma/-s and compounds/diplomaat
direk d%irEk // direk/-sie/-te/-theid/indirek... direk d%irEk // direk/-sie/-te/-theid/indirek...
dirig (e d@r@x2 // fix stress and i sounds: dirigeer/dirigent and compounds dirig (e d@r@x2 // fix stress and i sounds: dirigeer/dirigent and compounds
_) dis (inP3 d@s // disintegrasie/disinvestering and similar
dis (koers d@s // move default stress: diskoers/-e dis (koers d@s // move default stress: diskoers/-e
diskre (s d@skrE // fix stress and e sound: diskresie/diskresionêre diskre (s d@skrE // fix stress and e sound: diskresie/diskresionêre
_) dis (kre d@s // move default stress: diskreet/-heid/-ste/diskrete _) dis (kre d@s // move default stress: diskreet/-heid/-ste/diskrete
_) dis (oP3 d@s // disorganisasie/disoriënteer
divide (nd d@v@dE //dividende etc. divide (nd d@v@dE //dividende etc.
d (_N t // d (_N t //
dj c // palatal stop dj c // palatal stop
gel) eer e@r // words containing geleer take default stress: regsgeleerde gel) eer e@r // words containing geleer take default stress: regsgeleerde
@k) eer e@r // words containing keer take default stress, except for: @k) eer e@r // words containing keer take default stress, except for:
ik) eer 'e@r // abdikeer/kommunikeer, etc. ik) eer 'e@r // abdikeer/kommunikeer, etc.
oriënt) eer e@r // default stress: beroepsgeoriënteerd and similar
Cm) eer e@r // words containing meer preceded by consonant take default stress: bergmeer/strandmeer, etc. Cm) eer e@r // words containing meer preceded by consonant take default stress: bergmeer/strandmeer, etc.
rm) eer 'e@r // but not words like: alarmeer/gereformeerd/transformeer rm) eer 'e@r // but not words like: alarmeer/gereformeerd/transformeer
sf) eer e@r // sfeer at end of compounds does not take stress: atmosfeer, etc. sf) eer e@r // sfeer at end of compounds does not take stress: atmosfeer, etc.
C) ensies 'Ensis // forensiese C) ensies 'Ensis // forensiese
@) enswaar (dig @nsv'A:r // noemenswaardige/bejammerenswaardig @) enswaar (dig @nsv'A:r // noemenswaardige/bejammerenswaardig
@C) ent (K 'Ent // orent/student/presidentsrede @C) ent (K 'Ent // orent/student/presidentsrede
@C) ent (e_ 'Ent // plurals of some of the above###
@C) ent (e_ 'Ent // plurals of some of the above
en) ent (_ Ent // restore default stress: koppenent/voetenent en) ent (_ Ent // restore default stress: koppenent/voetenent
pr) ent (+ Ent // default stress for compounds of prent pr) ent (+ Ent // default stress for compounds of prent
@s) ent (rA Ent // winkelsentrum/studentesentrum, etc. @s) ent (rA Ent // winkelsentrum/studentesentrum, etc.
feite feIt@ // fix 2nd e sound: feitebepaling/-bevinding/-bron/-fout/-kennis/-lik feite feIt@ // fix 2nd e sound: feitebepaling/-bevinding/-bron/-fout/-kennis/-lik
@) fel (end f@l // betwyfelend/skuifelend/weifelend @) fel (end f@l // betwyfelend/skuifelend/weifelend
@) fel (ing f@l // betwyfeling/skuifeling/weifeling @) fel (ing f@l // betwyfeling/skuifeling/weifeling
fenom (e f@n%Om // fix stress and vowel sounds: fenomeen/-ene
fenomen (A@ f@n%Om@n // fix stress and vowel sounds: fenomenaal/-ale/fenomeneel/-ele
fero (mo f%Er%u // fix stress and vowel sounds: feromoon/feromone fero (mo f%Er%u // fix stress and vowel sounds: feromoon/feromone
fer (weel f@r // fix stress and 1st e sound: ferweel and many compounds fer (weel f@r // fix stress and 1st e sound: ferweel and many compounds
fessor fEs@r // fix last o sound: professor and compounds like universiteitsprofessor fessor fEs@r // fix last o sound: professor and compounds like universiteitsprofessor
foto fo@tu foto fo@tu
fo (togra fo@ // move default stress: fotograaf and similar fo (togra fo@ // move default stress: fotograaf and similar
_) fran (CisCA fr%an // fix stress and a sound: Fransiskus/Franciscus/Francisca _) fran (CisCA fr%an // fix stress and a sound: Fransiskus/Franciscus/Francisca
front (A fr%Ont // fix stress and e sound: konfronterend/-e/konfrontering
fru (str fr%W // move default stress: frustrerend/-e fru (str fr%W // move default stress: frustrerend/-e
fung (e f%WNx2 // fungeer/fungerende/fungering fung (e f%WNx2 // fungeer/fungerende/fungering
fungus fWNgWs_ // fix g sound: fungus and 2nd us sound in compounds: fungusinfeksie fungus fWNgWs_ // fix g sound: fungus and 2nd us sound in compounds: fungusinfeksie
gra (niet x2r%a // move default stress and fix a sound: graniet and compounds gra (niet x2r%a // move default stress and fix a sound: graniet and compounds
gra (sieu x2r%a // fix stress and shorten a sound: grasieus/-e gra (sieu x2r%a // fix stress and shorten a sound: grasieus/-e
_) gras (A x2ras_ // fix stress and a sound: graseter/grasoppervlakte/grasuie _) gras (A x2ras_ // fix stress and a sound: graseter/grasoppervlakte/grasuie
gra (sie x2rA: // but restore default stress and long a: grasie
_) gra (sie x2rA: // but restore default stress and long a: grasie
_) gri (mA x2r@ // grimas/grimeer/-middel and other compounds/grimering _) gri (mA x2r@ // grimas/grimeer/-middel and other compounds/grimering
grotere x2ro@t@r@ // fix vowel sounds and stress: grotere/-s grotere x2ro@t@r@ // fix vowel sounds and stress: grotere/-s
guerrilla g@r'Ila guerrilla g@r'Ila
_) in (aCemP2 'In_ //inasem/inademing, etc. _) in (aCemP2 'In_ //inasem/inademing, etc.
self) in (C@ _@n // selfingenome/-nheid/selfinkeer, etc. self) in (C@ _@n // selfingenome/-nheid/selfinkeer, etc.
_) in (a@P2 In // inakkuraat/inaktief/inaktiwiteit _) in (a@P2 In // inakkuraat/inaktief/inaktiwiteit
invest (@ @nv%Est // fix stress, v and e sounds: investeer/-erende/-ering
_) iese (C ,is@ // iesegrimmig and derivitives _) iese (C ,is@ // iesegrimmig and derivitives
ieterma (g %it@rm%a // fix stress and a sound: ietermagô ieterma (g %it@rm%a // fix stress and a sound: ietermagô
ieus i'Y@s // this ending always takes stress ieus i'Y@s // this ending always takes stress
_em) i (r @ _em) i (r @
ië e@:@- // i followed by "deelteken e" ië e@:@- // i followed by "deelteken e"
iën i'En //i deelteken e n iën i'En //i deelteken e n
or) iën i;En // default stress: (beroeps)georiënteerd, etc.
iëteit %i@t'eIt // fix stress: (imk)piëteit/variëteit iëteit %i@t'eIt // fix stress: (imk)piëteit/variëteit


iee (C i'e@ // distansieer/finansieer/finansieel/prieel iee (C i'e@ // distansieer/finansieer/finansieel/prieel
_) meege (@P5 m'e@x2@ _) meege (@P5 m'e@x2@
me (juf m@ // move default stress and shorten e sound me (juf m@ // move default stress and shorten e sound
me (laats m@ // fix stress and e sound: melaats/-e/-heid me (laats m@ // fix stress and e sound: melaats/-e/-heid
melancholie (_N m%El%aNk%o@li // fix stress and 1st e sound: melankolie
melancholie (_N m%El%aNk%o@li // fix stress and 1st e sound: melancholie
melanch m%El%aNk // stress and 1st e sound: melancholies/melancholiek/-e/melancholikus/-ci melanch m%El%aNk // stress and 1st e sound: melancholies/melancholiek/-e/melancholikus/-ci
melankolie (_N m%El%aNk%o@li // fix stress and 1st e sound: melankolie
melank m%El%aNk // stress and 1st e sound: melankolies/melankoliek/-e/melankolikus/-ci
mem (bra m%Em // move default stress: membraan/membrane mem (bra m%Em // move default stress: membraan/membrane
memo (ran m%Em%u // fix stress and vowel sounds: memorandum/memoranda and compounds memo (ran m%Em%u // fix stress and vowel sounds: memorandum/memoranda and compounds
meneer m@n'e@r // meneer/meneertjie meneer m@n'e@r // meneer/meneertjie
orgi (de %Orx2@ // move default stress: orgidee/orgideë and compounds orgi (de %Orx2@ // move default stress: orgidee/orgideë and compounds
orie o@ri orie o@ri
oriu 'o@riW oriu 'o@riW
oriënt (@ %o@r%ij%Ent // disoriëntering/(beroeps)georiënteerd
_) or (ka %Or // move default stress: orkaan/orkane/orkaanwaarskuwing... _) or (ka %Or // move default stress: orkaan/orkane/orkaanwaarskuwing...
orkes %OrkEs // orkes and compounds orkes %OrkEs // orkes and compounds
_) os (moC %Os // move default stress: osmose/osmoties/-e _) os (moC %Os // move default stress: osmose/osmoties/-e
oor (reed %o@r // move default stress oor (reed %o@r // move default stress
oorre (dA %o@re@ // move default stress: oorreding/-skrag/-vermoë oorre (dA %o@re@ // move default stress: oorreding/-skrag/-vermoë
oor (rompel %o@r // move default stress oor (rompel %o@r // move default stress
oorsaaklik %o@rsA:kl@k // fix stress: oorsaaklik/-e/-heid
_) oor (skadu %o@r // move default stress: oorskadu/-wing _) oor (skadu %o@r // move default stress: oorskadu/-wing
_) oor (skat %o@r // move default stress: oorskat/-te/-ting _) oor (skat %o@r // move default stress: oorskat/-te/-ting
oor (skrei %o@r // stress: oorskrei/-ding snd compounds oor (skrei %o@r // stress: oorskrei/-ding snd compounds
oor (tuig %o@r // oortuig/oortuiging/oortuigende oor (tuig %o@r // oortuig/oortuiging/oortuigende
_) oor (vleuel %o@r // move default stress: oorvleuel/-ing _) oor (vleuel %o@r // move default stress: oorvleuel/-ing
_) oor (vloedig %o@r // move default stress: oorvloedig/-e vs. oorvloed _) oor (vloedig %o@r // move default stress: oorvloedig/-e vs. oorvloed
_) oor (w o@r' // oorwin/oorweeg/oorweging/oorweldig/end...
_) oor (w %o@r // oorwin/oorweeg/oorweging/oorweldig/end...
oor (wig 'o@r // stress oor (wig 'o@r // stress
oot (moedig %o@t // move default stress: ootmoedig/-e/-heid oot (moedig %o@t // move default stress: ootmoedig/-e/-heid


parme (saan p%arm@ // move default stress: parmesaan(kaas) and compounds parme (saan p%arm@ // move default stress: parmesaan(kaas) and compounds
paro (di p%ar%u // fix stress and vowel sounds: parodie and compounds paro (di p%ar%u // fix stress and vowel sounds: parodie and compounds
parti (tu p%art@ // fix stress and i sound: partituur/partiture and compounds parti (tu p%art@ // fix stress and i sound: partituur/partiture and compounds
pa (stel p%a // move default stress: pastel(kleur) and similar compounds
pa (tat p@ // patat/warmpatat/wurgpatat pa (tat p@ // patat/warmpatat/wurgpatat
patie (KN p%at'i //words ending in patie has stress at end + a sound/simpatiek patie (KN p%at'i //words ending in patie has stress at end + a sound/simpatiek
@) paties p'A:tis // fix stress and a sound: simpaties/-e @) paties p'A:tis // fix stress and a sound: simpaties/-e
teleks t&lEks // fix stress and vowel sounds: teleks and compounds teleks t&lEks // fix stress and vowel sounds: teleks and compounds
_) teler te@l@r // fix stress and vowel sounds: teler/-s/-y/-svereniging, etc. _) teler te@l@r // fix stress and vowel sounds: teler/-s/-y/-svereniging, etc.
@C) te (nk t& ++ //tenk and friends @C) te (nk t& ++ //tenk and friends
_) te (no t@ //tenoor, tenore etc.
@C) te (C t@ /// @C) te (C t@ ///
s) te (king te@ //ontsteking in compounds s) te (king te@ //ontsteking in compounds
te (kkie+ tE // fix e sound: tekkie/-s/staptekkies and similar te (kkie+ tE // fix e sound: tekkie/-s/staptekkies and similar
ek) terende (_ t'e@r@nd@ //reflekterende respekterende ek) terende (_ t'e@r@nd@ //reflekterende respekterende
k) te (ring t'e@ //selektering, reflektering etc. k) te (ring t'e@ //selektering, reflektering etc.


n) terende (_ t'e@r@nd@ //konfronterende mensonterende
pe) terende (_ t'e@r@nd@ //kompeterende pe) terende (_ t'e@r@nd@ //kompeterende
i) terende (_ t'e@r@nd@ //presipiterende moniterende i) terende (_ t'e@r@nd@ //presipiterende moniterende
ul) terende (_ t'e@r@nd@ //konsulterende resulterende ul) terende (_ t'e@r@nd@ //konsulterende resulterende

+ 10
- 0
dictsource/dict_phonemes View File

k l m n p q r R k l m n p q r R
s S t tS v w x z s S t tS v w x z
Z Z


Dictionary rw_dict

a e i o u

* b B c d dZ f g
h j J k l m n N
n^ p q s S S; t tS
w x z

+ 0
- 1
dictsource/en_rules View File

__) - (_D m'aIn@s __) - (_D m'aIn@s
A_) - (_D _ A_) - (_D _
C_) - (_D _ C_) - (_D _
--) -


+ plVs + plVs
_) ++ (_ plVspl'Vs _) ++ (_ plVspl'Vs

+ 3
- 1
dictsource/es_rules View File

_) e (_ e _) e (_ e
e e e e
e (CK E e (CK E
e (Ch e
ei eI ei eI
ey (K eI ey (K eI
ey (_ 'eI ey (_ 'eI
_) o (_ o _) o (_ o
o o o o
o (CK O o (CK O
o (Ch o
oi oI oi oI
oy (K oI oy (K oI
oy (_ 'oI oy (_ 'oI




.group r .group r
_) r (_ E*e
_) r (_ E**e
r R r R
_) r R _) r R
A) r (A ** A) r (A **

+ 1
- 2
dictsource/tr_rules View File



.group .group
$ dolar $ dolar
' (Pb // split a word at ' and translate the first part separately.

' (Pb % // split a word at ' and translate the first part separately.



+ 2
- 2
dictsource/zh_list View File

举 ju3 举 ju3
乎 hu1 乎 hu1
乐 le4 乐 le4
了 liao3
了 le5 // more common than liao3
事 shi4 事 shi4
亮 liang4 亮 liang4
亲 qin1 亲 qin1
當 dang1 當 dang1
發 fa1 發 fa1
白 bai2 白 bai2
的 di4
的 de5 // more common than di4
盖 gai4 盖 gai4
盘 pan2 盘 pan2
盛 sheng4 盛 sheng4

+ 18
- 0
dictsource/zh_rules View File



.group b .group b
b p b p
@) b (K _^_EN


.group c .group c
c tsh c tsh
ch ts.h ch ts.h
@) c (K _^_EN


.group d .group d
d t d t
@) d (K _^_EN


.group e .group e
e o- e o-


.group f .group f
f f f f
@) f (K _^_EN


.group g .group g
g k g k
@) g (K _^_EN


.group h .group h
h x h x
@) h (K _^_EN


.group i .group i
i i //i in ing i i //i in ing


.group j .group j
j tS; j tS;
@) j (K _^_EN


.group k .group k
k kh k kh
@) k (K _^_EN


.group l .group l
l l l l
@) l (K _^_EN


.group m .group m
m m m m
@) m (K _^_EN


.group n .group n
n n n n


.group p .group p
p ph p ph
@) p (K _^_EN


.group q .group q
q tS;h q tS;h
@) q (K _^_EN


.group r .group r
r z. r z.
.group s .group s
s s s s
sh s. sh s.
@) s (K _^_EN


.group t .group t
t th t th
@) t (K _^_EN


.group u .group u
u u u u
n) ve yE //üe n) ve yE //üe


.group w .group w
// @) w (K _^_EN
wa wA //wa wan wang wa wA //wa wan wang
wai wai wai wai
wa1i wai55 wa1i wai55


.group x .group x
x S; x S;
@) x (K _^_EN


.group y .group y
y j //before a o e i y j //before a o e i
y (uDn ; y (uDn ;
yo (DngK yu yo (DngK yu
y (K i // foreign words y (K i // foreign words
@) y (K _^_EN


.group z .group z
z ts z ts
zh ts. zh ts.
@) z (K _^_EN


//tone number //tone number
.group .group

+ 13
- 1
phsource/compile_report View File

49 phoneme tables
50 phoneme tables
new total new total
base 99 99 base 99 99
base2 24 118 base2 24 118
tr 18 123 tr 18 123
ku 13 120 ku 13 120
ja 7 104 ja 7 104
rw 12 123


Data file Used by Data file Used by
b/b [b] base b/b [b] base
[&] sr [&] sr
[&] pt [&] pt
[&/] pt [&/] pt
[a#] rw
[a/] rw
vowel/a_2 [a] base2 vowel/a_2 [a] base2
[a] en_wi [a] en_wi
[A:] en_wi [A:] en_wi
[a] pt_pt [a] pt_pt
[a] ro [a] ro
[a:] vi [a:] vi
[a] rw
vowel/a#_2 [&] hr vowel/a#_2 [&] hr
[a2] sv [a2] sv
[&] is [&] is
[e] th [e] th
[e:] th [e:] th
[e] id [e] id
[e] rw
[e#] rw
vowel/e# [I] en_sc vowel/e# [I] en_sc
[I2] en_sc [I2] en_sc
vowel/e_2 [eI] en_sc vowel/e_2 [eI] en_sc
[i] th [i] th
[i:] th [i:] th
[i] ja [i] ja
[i] rw
[i#] rw
vowel/i# [i] en_us vowel/i# [i] en_us
[i] en_rp [i] en_rp
[y:] cy [y:] cy
[o] th [o] th
[o:] th [o:] th
[o] id [o] id
[o] rw
[o#] rw
vowel/o_2 [o:] cy vowel/o_2 [o:] cy
[o:] hi [o:] hi
[o:] hu [o:] hu
[u] is [u] is
[u] zhy [u] zhy
[u] zh [u] zh
[u] rw
[u#] rw
vowel/u_bck2 [u:] la vowel/u_bck2 [u:] la
vowel/u_fnt [u:] en_rp vowel/u_fnt [u:] en_rp
vowel/uu [U] en vowel/uu [U] en

+ 3
- 0
phsource/phonemes View File



phonemetable ja base phonemetable ja base
include ph_japanese include ph_japanese

phonemetable rw base2
include ph_kinyarwanda

BIN
phsource/vowel/u#_7 View File


+ 14
- 2
src/dictionary.cpp View File

if(stressed_syllable == 0) if(stressed_syllable == 0)
{ {
stressed_syllable = vowel_count - 1; stressed_syllable = vowel_count - 1;
for(ix=2; ix < vowel_count; ix++)
for(ix=1; ix < vowel_count; ix++)
{ {
if(vowel_stress[ix] == 1) if(vowel_stress[ix] == 1)
{ {
while(((c = *p) != ' ') && (c != 0)) while(((c = *p) != ' ') && (c != 0))
{ {
if(IsAlpha(wc)) if(IsAlpha(wc))
any_alpha = wc;
any_alpha++;
wc_prev = wc; wc_prev = wc;
wc_bytes = utf8_in(&wc,p,0); wc_bytes = utf8_in(&wc,p,0);


} }
} }
} }

if(match1.points == 0)
{
static const char str_unknown[4] = {phonCAPITAL,phonCAPITAL,phonCAPITAL,0};
if(((any_alpha > 0) || (p[wc_bytes-1] > ' ')) && !iswpunct(wc))
{
// an unrecognised character in a word, indicate with clicks
match1.phonemes = str_unknown;
match1.points = 1;
}
p += (wc_bytes-1);
}
} }
} }



+ 4
- 11
src/numbers.cpp View File

int n_bytes; int n_bytes;
int letter; int letter;
int len; int len;
int phoneme_tab_en;
char *p2; char *p2;
char *pbuf; char *pbuf;
char capital[20]; char capital[20];
char ph_buf[60]; char ph_buf[60];
char ph_buf2[60]; char ph_buf2[60];
char ph_buf_en[60];
char hexbuf[6]; char hexbuf[6];
static char single_letter[10] = {0,0};


ph_buf[0] = 0; ph_buf[0] = 0;
capital[0] = 0; capital[0] = 0;
Lookup("_cap",capital); Lookup("_cap",capital);
} }
} }
letter = towlower(letter);
letter = towlower2(letter);


LookupLetter(letter, word[n_bytes], ph_buf); LookupLetter(letter, word[n_bytes], ph_buf);




if(ph_buf[0] == 0) if(ph_buf[0] == 0)
{ {
phoneme_tab_en = SetTranslator2("en");
translator2->LookupLetter(letter, word[n_bytes], ph_buf_en);
if(ph_buf_en[0] != 0)
{
sprintf(ph_buf,"%c%c%s%c%c",phonSWITCH2, phoneme_tab_en + phonTOP, ph_buf_en, phonSWITCH2, voice->phoneme_tab_ix + phonTOP);
}
SelectPhonemeTable(voice->phoneme_tab_ix); // revert to original phoneme table
// ?? speak as English ??
sprintf(phonemes,"%c",phonSWITCH);
return(0);
} }


if(ph_buf[0] == 0) if(ph_buf[0] == 0)

+ 0
- 2
src/phoneme.h View File

#define phonT_REDUCED 25 #define phonT_REDUCED 25
#define phonSTRESS_TONIC 26 #define phonSTRESS_TONIC 26
#define phonPAUSE_CLAUSE 27 #define phonPAUSE_CLAUSE 27
#define phonSWITCH2 28
#define phonTOP 28 // highest pre-defined phoneme number


extern const unsigned char pause_phonemes[8]; // 0, vshort, short, pause, long, glottalstop extern const unsigned char pause_phonemes[8]; // 0, vshort, short, pause, long, glottalstop



+ 25
- 1
src/readclause.cpp View File

} }
#endif #endif


int towlower2(unsigned int c)
{
// check for non-standard upper to lower case conversions
if(c == 'I')
{
if(translator->translator_name == L('t','r'))
{
c = 0x131; // I -> ı
}
}
return(towlower(c));
}


static void GetC_unget(int c) static void GetC_unget(int c)
{//========================== {//==========================
{ {
value = attrlookup(attr1,mnem_emphasis); value = attrlookup(attr1,mnem_emphasis);
} }
sp->parameter[espeakEMPHASIS] = value;

if(translator->langopts.tone_language == 1)
{
static unsigned char emphasis_to_pitch_range[] = {50,50,40,70,90,90};
static unsigned char emphasis_to_volume[] = {100,100,70,110,140,140};
// tone language (eg.Chinese) do emphasis by increasing the pitch range.
sp->parameter[espeakRANGE] = emphasis_to_pitch_range[value];
sp->parameter[espeakVOLUME] = emphasis_to_volume[value];
}
else
{
sp->parameter[espeakEMPHASIS] = value;
}
ProcessParamStack(outbuf, outix); ProcessParamStack(outbuf, outix);
break; break;



+ 1
- 1
src/synthdata.cpp View File

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


const char *version_string = "1.31.17 24.Feb.08";
const char *version_string = "1.31.18 25.Feb.08";
const int version_phdata = 0x013105; const int version_phdata = 0x013105;


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

+ 13
- 5
src/tr_english.cpp View File

This function is language specific. This function is language specific.
*/ */


unsigned char c;
int c;
int vowel_posn=9; int vowel_posn=9;
int index; int index;
int count;
int ix; int ix;
int apostrophe=0; int apostrophe=0;


} }


index=0; index=0;
while(((c = word[index++]) != 0) && !isspace(c))
count=0;
for(;;)
{ {
index += utf8_in(&c,&word[index],0);
count++;

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

if(IsVowel(c) || (c == 'y')) if(IsVowel(c) || (c == 'y'))
{ {
vowel_posn = index;
vowel_posn = count;
break; break;
} }


if(c == '\'') if(c == '\'')
apostrophe = 1; apostrophe = 1;
else else
if((c < 'a') || (c > 'z'))
return(0); // letter (not vowel) outside a-z range or apostrophe, abort test
if((c < 'a') || (c > 0x241))
return(0); // letter (not vowel) outside Latin character range or apostrophe, abort test
} }
if((vowel_posn > 5) || ((word[0]!='s') && (vowel_posn > 4))) if((vowel_posn > 5) || ((word[0]!='s') && (vowel_posn > 4)))
return(1); // no vowel, or no vowel in first four letters return(1); // no vowel, or no vowel in first four letters

+ 9
- 0
src/tr_languages.cpp View File

tr = new Translator_Russian(); tr = new Translator_Russian();
break; break;


case L('r','w'): // Kiryarwanda
{
tr = new Translator();
tr->langopts.stress_rule = 2;
tr->langopts.stress_flags = 0x16;
tr->langopts.length_mods0 = tr->langopts.length_mods; // don't lengthen vowels in the last syllable
}
break;

case L('s','k'): // Slovak case L('s','k'): // Slovak
case L('c','s'): // Czech case L('c','s'): // Czech
{ {

+ 37
- 17
src/translate.cpp View File

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


p = &wordx[word_length-3];
p = &wordx[word_length-3]; // this looks wrong. Doesn't consider multi-byte chars.
if(memcmp(p,"'s ",3) == 0) if(memcmp(p,"'s ",3) == 0)
{ {
// remove a 's suffix and pronounce this separately (not as an individual letter) // remove a 's suffix and pronounce this separately (not as an individual letter)
return(0); return(0);
} }


if((phonemes[0] == 0) && (end_phonemes[0] == 0))
{
int wc;
// characters not recognised, speak them individually

utf8_in(&wc, wordx, 0);
if(!iswpunct(wc))
{
posn = 0;
while(*wordx != ' ')
{
wordx += TranslateLetter(wordx, phonemes, 4);
posn++;
if(phonemes[0] == phonSWITCH)
{
// change to another language in order to translate this word
strcpy(word_phonemes,phonemes);
return(0);
}
}
SetSpellingStress(phonemes,spell_word,posn);
}
}

c_temp = wordx[-1]; c_temp = wordx[-1];


found = 0; found = 0;
prefix_chars[0] = 0; prefix_chars[0] = 0;
n_chars = prefix_type & 0x3f; n_chars = prefix_type & 0x3f;


for(ix=0; ix < n_chars; ix++) // num. of characters to remove
for(ix=0; ix < n_chars; ix++) // num. of bytes to remove
{ {
prefix_chars[pfix++] = *wordx++; prefix_chars[pfix++] = *wordx++;


{ {
prefix_chars[pfix-1] = 0; // discard the last character of the prefix, this is the separator character prefix_chars[pfix-1] = 0; // discard the last character of the prefix, this is the separator character
} }

while((*wordx & 0xc0) == 0x80)
{
prefix_chars[pfix++] = *wordx++; // for multibyte characters
}
} }
prefix_chars[pfix] = 0; prefix_chars[pfix] = 0;
c_temp = wordx[-1]; c_temp = wordx[-1];
{ {
// retranslate the prefix part // retranslate the prefix part
char *wordpf; char *wordpf;
char prefix_phonemes2[12];

strncpy0(prefix_phonemes2,end_phonemes,sizeof(prefix_phonemes2));
wordpf = &prefix_chars[1]; wordpf = &prefix_chars[1];
found = LookupDictList(&wordpf, phonemes, dictionary_flags, SUFX_P, wtab); // without prefix found = LookupDictList(&wordpf, phonemes, dictionary_flags, SUFX_P, wtab); // without prefix
if(found == 0) if(found == 0)
{ {
end_type = TranslateRules(wordpf, phonemes, N_WORD_PHONEMES, end_phonemes, 0, dictionary_flags[0]); end_type = TranslateRules(wordpf, phonemes, N_WORD_PHONEMES, end_phonemes, 0, dictionary_flags[0]);
strcat(prefix_phonemes, phonemes);
sprintf(prefix_phonemes,"%s%s%s",phonemes,end_phonemes,prefix_phonemes2);
} }
prefix_flags = 1;
}
else
{
strcat(prefix_phonemes,end_phonemes);
} }
strcat(prefix_phonemes,end_phonemes);
end_phonemes[0] = 0; end_phonemes[0] = 0;


end_type = 0; end_type = 0;
srcix = source_ix+1; srcix = source_ix+1;
} }
else else
if(ph_code == phonSWITCH2)
{
SetPlist2(&ph_list2[n_ph_list2],phonSWITCH);
ph_list2[n_ph_list2++].tone_number = *p++ - phonTOP; // phoneme table number (phonTOP is added to avoid confusion with special phoneme numbers)
}
else
if(ph_code == phonX1) if(ph_code == phonX1)
{ {
// a language specific action // a language specific action
{ {
c = ' '; c = ' ';
} }
c = towlower(c);
c = towlower2(c);
} }


if(phoneme_mode) if(phoneme_mode)


if(iswupper(c)) if(iswupper(c))
{ {
c = towlower(c);
c = towlower2(c);


if(langopts.param[LOPT_SYLLABLE_CAPS]) if(langopts.param[LOPT_SYLLABLE_CAPS])
{ {

+ 1
- 0
src/translate.h View File

int IsDigit(unsigned int c); int IsDigit(unsigned int c);
int IsAlpha(unsigned int c); int IsAlpha(unsigned int c);
int isspace2(unsigned int c); int isspace2(unsigned int c);
int towlower2(unsigned int c);
void SetVoiceStack(espeak_VOICE *v); void SetVoiceStack(espeak_VOICE *v);


extern FILE *f_trans; // for logging extern FILE *f_trans; // for logging

Loading…
Cancel
Save