Browse Source

[1.39.14]

Provide Viseme events on the Windows SAPI5 interface.


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

+ 7
- 6
dictsource/af_list View File

@@ -148,6 +148,7 @@ _roman rum'eIns@

// Place names

afganistan afg'anistan
alaska al'aska
algerië alx2'e@re@:@-
antwerpen antv&rp@n
@@ -160,6 +161,7 @@ bermuda $2
bethlehem bEt_liEm
boedapest budapEst
boekarest bukarEst
bolivië bul'Ivi:@
bonnievale _^_EN
brittanje $2
brooklyn _^_EN
@@ -196,6 +198,7 @@ hermon $1
hirosjima hiruS'ima
israel IsraI:l
italië it'A:li;@
kalafong kalaf'ON
kanada kanad%a
kanaän kA:nA:an
kaïro ka_'iru
@@ -309,6 +312,7 @@ der d@r
derick dErik
deventer d'e@v@nt@r
diana dij'A:na
donaldson _^_EN
du $u
(du pisanie) du||pis'A:ni
(du plessis) du||pl@s'i
@@ -640,6 +644,8 @@ dis $u
aangaande $2
aanstaande $2
adagio ad'A:dZi;%@U
afgaanse afg'A:ns@
afgane afg'A:n@
africana $3
afkere afke@r@
agamemnon ax2am'EmnOn
@@ -650,14 +656,12 @@ algaande $2
alge alx2@
algehele alx2@h,e@l@
allegro al'Egru
alles al@s
almiskie $3
alom al_'Om
alreeds $2
alternatiewe $4
amen A:mEn
anale an'A:l@
//###anatomie $4 $only
asof asOf
asook %as_o@k
aspris $2
@@ -674,7 +678,7 @@ bene be@n@
beswil bEsv@l
besnedene b@sne@d@n@
bestes bEst@s
beta be@ta
beta be@ta $only
bewe be@v@
bewend be@v@nt
bewering b@ve@rIN
@@ -766,7 +770,6 @@ hokaai hOkAI
hoofsaaklik $2
hoogedele ho@x2 _e@d@l@
hosanna hus'ana
//###huigelary $4

ibis $1
idee $2
@@ -941,7 +944,6 @@ sinagoge s@n@x2o@x2@
senatore s@nat'o@r@
singenot sInx2@nOt
sir _^_EN
skares skA:r@s
skepsele skEps@l@
skuldelas skWld@las
s'n s@n $u
@@ -1003,7 +1005,6 @@ verse f&:rs@
vers f&:rs
verste f&rst@
verte f&rt@
vertes f&rt@s
verweg f&:rv&x2
via via
volheid $1

+ 14
- 3
dictsource/af_rules View File

@@ -68,7 +68,6 @@
a (riA 'A: // akwarium/barium/estuarium/herbarium/seminaria
a (ristokr %a // shorten 1st a: aristokrasie/-kraat/-krate/-kraties
arm (last %ar@-m // move default stress: armlastig/-e
@C) as (_ as // shorten final a of words ending in -as: rigtingvas/jonkmanskas, etc.
C) asie 'A:si
@@@@) asie A:s%i
oub) asie A:si // restore default stress: oubasie/-s
@@ -256,6 +255,7 @@
ar (seen %ar
ar (tikel %ar // stress: artikel and compounds
artiku %art%ik%y // stress and vowel sounds: artikulasie/artikuleer
@C) as (_ as // shorten final a of words ending in -as: rigtingvas/jonkmanskas, etc.
_) a (sië A: // fix stress and a sound: Asië/-r/-rs
_) a (strA %a // astrant/astrale/astraal
artille (rie %art@l@ // stress and vowel sounds: artillerie and compounds
@@ -854,6 +854,7 @@
CAC) e (CC @ // fix e sound: nalatenskap/wapenstilstand
CAC) e (C% E // beesfilette/nougesette/onderbesette/voortgesette
juwel) e (C @ // fix e sound: juwelekissie and similar compounds
fontein) e (C @_ // fix e sound: Fonteinesirkel/-wisselaar, etc.
kening) e (@ @ // fix e sound: rekeningeklerk/-navraag and similar
narkos) e (C @ // fix e sound: narkosedood/-gas/-masker/-middel/-rekords, etc.
ooi) e (C @ // fix e sound: dooiepunt/ooievaar and similar
@@ -1048,7 +1049,7 @@
AAv) eer e@r // restore default stress: pouveer/makouveer/horlosieveer/kraaiveer/rooiveer
w) eer e@r // stress may vary in words containing weer: lugafweer/donderweer
u) eer 'e@r // aktueer/konstrueer/salueer, etc.
effek %e@fEk // move default stress and fix e sound: effek/-te/-tief
effek (K %ifEk // move default stress and fix e sound: effek/-te/-tief/rimpeleffek
eienaardig %eI@nA:rd@x2 // move default stress: eienaardig/-ste
@) ein (dig 'eIn // nimmereindige/nimmereindigend
eind (eks eInt_ // fix d sound and make short pause: eindeksamen/-s and compounds
@@ -1967,6 +1968,11 @@
j j
j (j
ja (broer jA: // fix a sound: jabroer/-s
_) jag (A j''ax2_ // fix stress and a sound: jagavontuur/-ekspedisie/-entoesias/-eskader/-instink...
jag (end jA:x2 // but long a in jagend/-e and compounds
jag (er jA:x2 // long a in jager and compounds
jag (ing jA:x2 // long a in (ver)jaging and similar
jaguar jagwar // fix a, g and u sounds: jaguar and compounds
_) ja (CobA j%a // fix stress and a sound: Jacoba/Jacobus/Jakobus
jakaranda j%ak%ar'anda //jakaranda and compounds
jakopewer j%ak%Ope@v@r_ // fix stress and vowel sounds: jakopewer/-oë
@@ -3374,6 +3380,7 @@
profesie prOf@s'i // fix vowel sounds and move stress
profit (e pr%Of@t // fix stress and vowel sounds: profiteer/-tering
pro (gram pr%u // fix stress and o sound: program/-e/ontwikkelingsprogram
programme (ring pr%ux2r%ame@ // fix e sound and stress: (rekenaar)programmering(staal), etc.
pro (gress pr%o@ // fix stress and o sound: progressie/-f/-we
pro (CA pr%u // probeer/produk/proses/professie/provinsie
produk (A pr%udWk_ // fix u sound, pause: produkopsies/-uitstalling, etc.
@@ -3510,6 +3517,7 @@
regime (_ r@Zi:m // regime/-s and compounds
regi (ment r@x2@ // fix stress and e and i sounds: regement/-e and compounds
regimen (ta@ r%Ex2%im%En // fix stress: regimentaal/-tale
regi (sseuC r@x2@ // fix stress and e sound: (film-/kuns-/mede-/musiek-/oorklankings-)regisseur/-sseuse
reg (ist r@x2 // registrasie/-nommer/register/bevolkingsregister
regle (ment r@x2l@ // fix stress and e sounds: reglement/-e and compounds
regverdig r&x2f'&rd@x2 // regverdig/onregverdige/regverdigheid - verwyder uit af_list
@@ -3576,6 +3584,7 @@
.group s
s s
s (s
@) s (_S1q s // to correctly handle plurals of propernames in af_list: Jouberts, etc.
@@@) s (_S1 s // to correctly handle plural s
i) s (_ s // exceptions to rule: @@@) s (_S1 s
se (_ s@ //the word se and some ending in se
@@ -3630,7 +3639,7 @@
seroto (ni s%Er@t%u // fix stress and vowel sounds: serotonien(vlakke, etc.)
sitrus s'itr%Ws_ //i sound and stress in compounds

saamge (P6 s'A:mx2@ // saamgepers/-de/saamgetel/saamgeêet
_) saam (P4 s'A:m // saamgepers/-de/saamgetel/saamgeêet/saampers
saamgee sA:mx2e@ // fix ee in saamgee; see rule: saamge (P6
sabot (A s%ab%ut // sabotasie/saboteer
safari s%afA:r%i // fix 1st a: safari/safaripak, etc.
@@ -4029,10 +4038,12 @@
straa) t (j t // split tj sound: straat(jas/-joggie/-jonge/-joernaal)
ui) tj tj // uitjaag/uitjou/uitjubel
ui) tjie ci // beskuitjie/fluitjie/ruitjie/uitjie, etc.
@) tjoernali tj%urn%al@ // fix stress, split t/j: front-/koerant-/sport-/vryskutjoernalis, etc.
_) th (@@ t
@) th (C t // drop h: Bothma/Neethling and similar
_) theu t''Y@ // Theuns/Theunis
_) th _^_EN // if only one vowel character
@) thy (_ _^_EN // words and names ending in -thy are English: Cathy, etc.
@) th (_N _^_EN
@) tion (_ _^_EN //words ending in tion is English
@) tions (_ _^_EN //words ending in tions is English

+ 0
- 5
dictsource/cs_rules View File

@@ -384,11 +384,6 @@ synchro) ni ni
qu kv

.group r
// r r
// A) r (A *
// C) r (A @-*
// rr *r
// right rajt
K) r (K r-

r R

+ 7
- 0
dictsource/de_rules View File

@@ -589,6 +589,13 @@
&) ie (r_ 'i:
u) ie (r_ _|'i:
&) ie (rlich 'i:
bank) ie (r I'e:
barr) ie (r I'e:
financ) ie (r I'e:
hotel) ie (r I'e:
prem) ie (r I'e:
hyg) ie (n I'e:
ital) ie (n I'e:
d) ienst i:nst
r) ien (@ IEn
&) ien (_ =I@n

+ 49
- 37
dictsource/dict_phonemes View File

@@ -15,6 +15,19 @@ n N p r s S t tS
v w x2 z Z


Dictionary bn_dict

& a a: a~ e E e~ i
I i: i:~ i~ l- o O o:
o~ O~ r- U u u: u:~ u~

* b B c C ch d d.
g h j J k kh l m
n N n. n^ p ph Q r
r. s S s. t t. t.h th
tS x z


Dictionary cs_dict

@- a a: aU e e: eI eU
@@ -277,6 +290,34 @@ n^ p r R s S t tS
ts tS; v x z Z


Dictionary ml_dict

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

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


Dictionary ne_dict

@ @- @2 @3 a a: aI aU
a~ e E e: E: E~ e~ i
I i: i~ l- o O o: O:
o~ O~ r- U u u: u~ V

- : b c ch d d. f
g h H j J k kh l
l. m n N n. n^ p ph
Q q r r. s S s. t
T t. t.h th v w x z
z.


Dictionary nl_dict

8 @ @- A a: E e: EI
@@ -470,42 +511,13 @@ l m n N p r s t
tS v w z


Dictionary ml_dict

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

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


Dictionary bn_dict
Dictionary lv_dict

& a a: a~ e E e~ i
I i: i:~ i~ l- o O o:
o~ O~ r- U u u: u:~ u~
a a: ai au e e: ei i
i: ie iu o o: oi u u:
ui uo

* b B c C ch d d.
g h j J k kh l m
n N n. n^ p ph Q r
r. s S s. t t. t.h th
tS x z


Dictionary ne_dict

@ @- @2 @3 a a: aI aU
a~ e E e: E: E~ e~ i
I i: i~ l- o O o: O:
o~ O~ r- U u u: u~ V

- : b c ch d d. f
g h H j J k kh l
l. m n N n. n^ p ph
Q q r r. s S s. t
T t. t.h th v w x z
z.
b c d dZ f g h j
J k l l^ m n N n^
p R R2 s S t tS ts
v z Z

+ 7
- 2
dictsource/en_list View File

@@ -350,6 +350,9 @@ prof $dot
rev $dot
st $dot

// not abbreviations when all-caps
all O:l $allcaps
no noU $allcaps


// MAIN WORD DICTIONARY
@@ -451,7 +454,6 @@ alfalfa alf'alf@
alias eIli@s
alibi al@baI
alkali alk@laI
all O:l $allcaps // not abbrev.
allay a2leI
allegiance a2li:dZ@ns
allele a2li:l
@@ -597,6 +599,7 @@ barometer b@r0mI2t3
barrage barA:Z
basis beIsIs
bass beIs
baste beIst
bastion basti@n
batman batman
bayou baIu:
@@ -937,6 +940,7 @@ edit EdIt
edition I2dIS@n
edwardian Edw'O@di@n
efile i:faIl
egg Eg // egging
eh eI
el ,El
electricity I2lEktr'IsI2tI
@@ -1795,6 +1799,7 @@ saline seIlaIn
san ,san
sardine $2
satan seIt@n
satanist seIt@nIst
saucepan sO:sp@n
saudi saUdI
says sEz
@@ -1852,6 +1857,7 @@ sierra sI'e@r@
signage saInI2dZ
sikh si:k
silhouette sI2lUw'Et
silo saIloU
simon saIm@n
simultaneous $3
singly sINglI $verbf
@@ -2421,7 +2427,6 @@ Denise d@ni:s
Derek dErIk
Dinah daIn@
Dominic d0mI2nIk
Donald d0n@Ld
Doris d0rIs
Dougall du:g@L
Dylan dIl@n

+ 6
- 1
dictsource/en_rules View File

@@ -29,6 +29,8 @@
// ?7 Scottish
// ?8 Use full vowel, not schwa in some word endings

.L01 l r

.replace
ff ff // ligature
fi fi
@@ -2348,7 +2350,7 @@
_) exc (e %Eks
exc (i %Eks
exc (elle Eks
ex (e+ Eks
C) ex (e Eks
exe (cutio EksI
ex (erc Eks
_) ex (A %Egz
@@ -2533,6 +2535,7 @@
@) i (butive 'I
@) i (butor 'I
&) i (c_ =I
&) i (ciCe_ =I
&) i (ca_ =I
&) ico (_ =I2koU
&) i (cal =I
@@ -3714,6 +3717,7 @@
pers) on @n
pers) on (i '0n
postp) on 'oUn
on (ald 0n
d) on (at %oUn
on (an_ oUn
_) on (io Vn
@@ -4322,6 +4326,7 @@
rhyth rID
_) rm ,A@Em
rrhoea r'i@
_) ru (bL01 ru:
_) run (a rVn
_) run (o rVn
_) rw r%U

+ 2
- 1
dictsource/fr_list View File

@@ -24,7 +24,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated 2008-10-13 Michel Such <[email protected]>
// Updated 2008-10-24 Michel Such <[email protected]>
//
// * Numbers, a few abbreviations and exceptions.
//
@@ -268,6 +268,7 @@ anpe $abbrev
api $abbrev
avh aveaS
bd boulevard $text
brltty $abbrev
cci $abbrev
cio $abbrev
ctrl control $text $pause

+ 15
- 8
dictsource/fr_rules View File

@@ -23,7 +23,7 @@

// 2006-11-18 Gilles Casse <[email protected]>
//
// Updated: 2008-10-16 Michel Such <[email protected]>
// Updated: 2008-11-01 Michel Such <[email protected]>
//

// Letter classes:
@@ -70,6 +70,8 @@

a (nnA a // manne
an (K A~ // ancien, élan
@@m) an (_ an // tennisman
lism) an (_ A~ // talisman
_C) aon (_ A~ // faon, paon, taon
s) aoul (_ u // saoul
s) aou (le u // saoule
@@ -83,6 +85,7 @@
_) auto (@P4 oto
_) autom (n otO
_) au (treX o2
bb) aye (X ei // abbaye
p) a (ys E // pays paysage
ay (C E // aymé
ay Ej // paye
@@ -116,9 +119,11 @@
cc (Y ks // accéder
cc k // occuper
_) ch (arism k // charisme, charismatique
_) ch (irop k // chiroptère
a) ch (_ k // almanach
e) ch (_ k // varech
_A) ch (o_ k // écho
mani) ch (é k // manichéisme
_eu) ch (ari k // eucharistie
or) ch (esC k // orchestre
or) ch (iC k // orchidée
@@ -230,6 +235,7 @@ _) ç' (P2v s
CC) ein (_ E~n2 // plein emploi
e (il E // vieille
ei E // neige
eoi wA // asseoir
ell El // selle
el (K El // celsius, caramel
_f) em (me a // femme
@@ -248,18 +254,18 @@ _) ç' (P2v s
em (p A~
en (_ A~n2 // en
en (hA A~n // enharmonique
en (A A~n // enivrer
_) en (A A~n // enivrer

C) en (d_ A~ // comprend dépend
od) en (dr E~ // rhododendron
qu) en (d_ A~

pati) en A~ // patient patience
X) en (nu A~ // ennui
en (nu A~ // ennui
en (nA E // penne ennemi

C) en (A @n // menu
é) en (_ E~ // européen

en (nA E // penne ennemi
Ci) en (nA E // mienne

éC) en (t_ A~ // récent différent élément
@@ -579,6 +585,7 @@ _) ç' (P2v s
vin) gt (_sept t
vin) gt (_huit t
vin) gt (_neuf t
vin) gt (_neuvi t

gt (_ // vingt doigts

@@ -794,7 +801,6 @@ _) half _^_en

_) n' (P2v n

A) ng (_ N // parking meeting
nn n // panne
_) n (_° nymero
_) neuro (@@P5 nYro
@@ -990,6 +996,7 @@ mou) rr rr // mourrai
s s // verser sien

s (_S1 z2
stein (_ Stajn

_) s' (P2v s // s'amène
_) s' (esXP2v s // s'amène
@@ -1079,7 +1086,6 @@ _tou) s (_leurs_
_) sky _^_en
_) smil _^_en // smile, smiley
spy _^_en
sy (_ _^_en


.group t
@@ -1280,7 +1286,8 @@ Vn) t (_ t2
x ks
xs ks // lexique lexicaux vox
e) x (A gz // exagérer exemple
le) x (i ks
Ce) x (i ks
ine) x (i gz
_e) x (h gz // exhumer

ai) x (_ // voix paix prix

+ 0
- 5
dictsource/sk_rules View File

@@ -346,11 +346,6 @@ _administratív) n (e n
qu kv

.group r
// r r
// A) r (A *
// C) r (A @-*
// rr *r

K) r (K r-
r R
rr R

+ 35
- 1
phsource/compile_report View File

@@ -1,4 +1,4 @@
54 phoneme tables
55 phoneme tables
new total
base 100 100
base2 24 119
@@ -54,6 +54,7 @@
ml 13 139
bn 59 145
ne 14 141
lv 26 121

Data file Used by
b/b [b] base
@@ -578,6 +579,7 @@ r3/r_trill [R2] base
[R] sk
[r*] sr
[x] pt
[R] lv
r3/r_trill2 [R] base
[r] cy
[R] hr
@@ -591,6 +593,7 @@ r3/r_trill.wav [R2] base
[R] sk
[r*] sr
[x] pt
[R] lv
r3/r_u [(u)] base
r3/rx [*] base
[r/] base
@@ -780,6 +783,7 @@ ustop/k_ [k] base
[k] sw
[k] sq
[kh] bn
[k] lv
ustop/ki [c] base
[k] base
[k] base2
@@ -797,6 +801,7 @@ ustop/ki [c] base
[c] tr
[J] ku
[c] ku
[k] lv
ustop/kl [k] base
[k] base2
[k] en
@@ -809,6 +814,7 @@ ustop/kl [k] base
[k] zhy
[k] sw
[kh] bn
[k] lv
ustop/kr [k] base
[k] base2
[k] en
@@ -821,6 +827,7 @@ ustop/kr [k] base
[k] zhy
[k] sw
[kh] bn
[k] lv
ustop/k_unasp [k] base
[k] base2
[k] fi
@@ -832,6 +839,7 @@ ustop/k_unasp [k] base
[k`] ko
[k] sq
[k] bn
[k] lv
ustop/k_unasp_ [k] zh
ustop/null [?] base
ustop/p [p] base
@@ -860,6 +868,7 @@ ustop/pl [p] base
[p] sq
[p] bn
[ph] bn
[p] lv
ustop/pr [p] base
[p] base2
[p] fi
@@ -884,6 +893,7 @@ ustop/p_unasp [p] base
[p`] ko
[p] sq
[p] bn
[p] lv
ustop/p_unasp_ [p] base2
[p] fi
[p] hi
@@ -893,6 +903,7 @@ ustop/p_unasp_ [p] base2
[p;] ro
[p] sq
[p] bn
[p] lv
ustop/q [q] base
ustop/q_u [q] base
ustop/t [t] base
@@ -913,6 +924,7 @@ ustop/t_ [t] base
[t] sq
[t.] bn
[t.h] bn
[t] lv
ustop/t_dnt [t] base
[t[] base
[t] base2
@@ -950,6 +962,7 @@ ustop/ts [ts] base2
[ts;] ro
[z] zhy
[tsh] zh
[ts] lv
ustop/tsh [tS] base
[c] zhy
ustop/tsh_ [tS] base
@@ -964,6 +977,7 @@ ustop/t_short [t] fr
[t] el
[t] sq
[t.] bn
[t] lv
ustop/tsh_pzd [tS;] zh
ustop/tsh_pzd_unasp [tS;] zh
ustop/tsh_sr [tS] sr
@@ -1012,6 +1026,7 @@ vdiph2/i@ [i@] en_n
vdiph2/i@_2 [i@] en_wm
vdiph2/ie [i@] en_wi
[ie] fi
vdiph2/ie_2 [ie] lv
vdiph2/ii@ [i@] en
[i@3] en
vdiph2/ii@_3 [i@] vi
@@ -1020,6 +1035,7 @@ vdiph2/iu [iU] base2
[iU] vi
[iu] zhy
vdiph2/iu_2 [iu] fi
[iu] lv
vdiph2/iu_3 [iu] af
vdiph2/iu_4 [Iu] cy
[Yu] cy
@@ -1033,6 +1049,7 @@ vdiph2/o_oo [o@] en_wi
[o] zh
vdiph2/u-@ [y@] vi
vdiph2/u#@ [U@] en_sc
vdiph2/uaa [uo] lv
vdiph2/uo [uo] fi
vdiph2/uu@ [U@] en
[U@] en_n
@@ -1057,6 +1074,7 @@ vdiph/aai_2 [AI] af
[AY] cy
vdiph/aai_3 [ai] fi
vdiph/aau [au] fi
[au] lv
vdiph/aau_2 [aU] en_wi
[aU] de
[VU] nl
@@ -1078,6 +1096,7 @@ vdiph/ai [aI] base2
[aI] pt
[a:I] vi
[aI] id
[ai] lv
vdiph/ai_2 [aI] cy
[aY] cy
vdiph/ai_3 [aI] no
@@ -1113,6 +1132,7 @@ vdiph/eei [EI] base2
vdiph/eei_2 [eI] eo
[ei] fi
[eI] id
[ei] lv
vdiph/eei_3 [eI] sk
[eI] ku
vdiph/eeu [EU] pt
@@ -1171,6 +1191,7 @@ vdiph/ooi [OI] en
[oi] fi
[OI] no
[oi] zhy
[oi] lv
vdiph/ooi_2 [OI] af
vdiph/ooi_3 [OI] en_rp
[aI] en_wm
@@ -1193,6 +1214,7 @@ vdiph/ui [uI] base2
[ui] fi
[uI] vi
[ui] zhy
[ui] lv
vdiph/u-i [yI] vi
vdiph/ui_2 [uI] af
vdiph/ui_3 [uI] cy
@@ -1360,6 +1382,7 @@ vowel/& [a] en_rp
[&] sv
[&] bn
[&:] bn
[&:] lv
vowel/0 [0] en
[O] hi
[O] pt
@@ -1421,6 +1444,7 @@ vowel/a# [a/] base2
[&/] pt
[a#] rw
[a/] rw
[&] lv
vowel/a_2 [a] base2
[a] en_wi
[A:] en_wi
@@ -1472,6 +1496,7 @@ vowel/a_5 [a:] ta
[a] tr
[a] sq
[a:] ml
[a] lv
vowel/a_6 [a] fr
[a2] fr
vowel/aa [a] fi
@@ -1489,6 +1514,7 @@ vowel/aa_2 [A:] en
[A] zh
vowel/aa_3 [A:] af
[A] sq
[a:] lv
vowel/aa_4 [O:] en_us
[A:] sv
[O] vi
@@ -1604,6 +1630,7 @@ vowel/e_mid [E] en_rp
[E2] id
[E] da
[E] bn
[e] lv
vowel/e_mid2 [E] af
[E] de
[E2] de
@@ -1617,6 +1644,7 @@ vowel/e_mid2 [E] af
[e] sw
[e] tr
[E] ko
[e:] lv
vowel/@_fnt [@] en_wi
[@2] en_wi
[@2] hr
@@ -1657,6 +1685,8 @@ vowel/i_3 [i] af
[i] fr
[i:] fr
[i:] sk
[i] lv
[i:] lv
vowel/i_4 [i] fi
[i] hu
[I] it
@@ -1825,6 +1855,8 @@ vowel/oo_1 [O:] en_n
[o] hr
[o] vi
[O/] sq
[o] lv
[o:] lv
vowel/oo_2 [0] en_sc
[O] cy
[o] cs
@@ -1928,6 +1960,8 @@ vowel/uu# [U] ku
vowel/uu_2 [U] base2
[U] de
[U] tr
[u] lv
[u:] lv
vowel/uu_3 [u] af
[y] zh
vowel/uu_4 [U] fi

+ 1
- 0
phsource/ph_french View File

@@ -425,6 +425,7 @@ phoneme r
beforenotvowel r/2
formants vwl_fr/@R3+r3/rx%30
after @2 vwl_fr/@R5+r3/rx%40
after (u) vwl_fr/@R5+r3/rx%30
after (e) vwl_fr/@R4+r3/rx%20
endphoneme


+ 3
- 0
phsource/phonemes View File

@@ -1322,3 +1322,6 @@ include ph_bengali

phonemetable ne hi
include ph_nepali

phonemetable lv base
include ph_latvian

BIN
phsource/vdiph2/ie_2 View File


BIN
phsource/vdiph2/uaa View File


BIN
phsource/vowel/& View File


BIN
phsource/vowel/a_6 View File


BIN
phsource/vowel/aa_9 View File


+ 78
- 5
platforms/windows/windows_sapi/ttsengobj.cpp View File

@@ -23,13 +23,12 @@
#include "src/speak_lib.h"
#include "stdio.h"
#define CTRL_EMBEDDED 1
CTTSEngObj *m_EngObj;
ISpTTSEngineSite* m_OutputSite;
FILE *f_log2=NULL;
ULONGLONG event_interest;
extern int AddNameData(const char *name, int wide);
extern void InitNamedata(void);
@@ -49,6 +48,10 @@ char *path_install = NULL;
unsigned long audio_offset = 0;
unsigned long audio_latest = 0;
int prev_phoneme = 0;
int prev_phoneme_position = 0;
unsigned long prev_phoneme_time = 0;
unsigned int gBufSize = 0;
wchar_t *TextBuf=NULL;
@@ -65,6 +68,48 @@ int frag_count=0;
FRAG_OFFSET *frag_offsets = NULL;
int VisemeCode(unsigned int phoneme_name)
{//======================================
// Convert eSpeak phoneme name into a SAPI viseme code
int ix;
unsigned int ph;
unsigned int ph_name;
#define PH(c1,c2) (c2<<8)+c1 // combine two characters into an integer for phoneme name
const unsigned char initial_to_viseme[128] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 0, 0,19, 0, 0, 0, 0, 0,
0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,
4, 2,18,16,17, 4,18,20,12, 6,16,20,14,21,20, 3,
21,20,13,16,17, 4, 1, 5,20, 7,16, 0, 0, 0, 0, 0,
0, 1,21,16,19, 4,18,20,12, 6, 6,20,14,21,19, 8,
21,20,13,15,19, 7,18, 7,20, 7,15, 0, 0, 0, 0, 0 };
const unsigned int viseme_exceptions[] = {
PH('a','I'), 11,
PH('a','U'), 9,
PH('O','I'), 10,
PH('t','S'), 16,
PH('d','Z'), 16,
PH('_','|'), 255,
0
};
ph_name = phoneme_name & 0xffff;
for(ix=0; (ph = viseme_exceptions[ix]) != 0; ix+=2)
{
if(ph == ph_name)
{
return(viseme_exceptions[ix+1]);
}
}
return(initial_to_viseme[phoneme_name & 0x7f]);
}
int SynthCallback(short *wav, int numsamples, espeak_EVENT *events);
int SynthCallback(short *wav, int numsamples, espeak_EVENT *events)
@@ -73,6 +118,8 @@ int SynthCallback(short *wav, int numsamples, espeak_EVENT *events)
wchar_t *tailptr;
unsigned int text_offset;
int length;
int phoneme_duration;
int this_viseme;
espeak_EVENT *event;
#define N_EVENTS 100
@@ -86,7 +133,7 @@ int SynthCallback(short *wav, int numsamples, espeak_EVENT *events)
m_EngObj->CheckActions(m_OutputSite);
// return the events
for(event=events; event->type != 0; event++)
for(event=events; (event->type != 0) && (n_Events < N_EVENTS); event++)
{
audio_latest = event->audio_position + audio_offset;
@@ -121,6 +168,28 @@ int SynthCallback(short *wav, int numsamples, espeak_EVENT *events)
Event->lParam = (long)event->id.name;
Event->wParam = wcstol((wchar_t *)event->id.name,&tailptr,10);
}
if(event->type == espeakEVENT_PHONEME)
{
if(event_interest & SPEI_VISEME)
{
phoneme_duration = audio_latest - prev_phoneme_time;
// ignore some phonemes (which translate to viseme=255)
if((this_viseme = VisemeCode(event->id.number)) != 255)
{
Event = &Events[n_Events++];
Event->eEventId = SPEI_VISEME;
Event->elParamType = SPET_LPARAM_IS_UNDEFINED;
Event->ullAudioStreamOffset = ((prev_phoneme_position + audio_offset) * srate)/10; // ms -> bytes
Event->lParam = phoneme_duration << 16 | this_viseme;
Event->wParam = VisemeCode(prev_phoneme);
prev_phoneme = event->id.number;
prev_phoneme_time = audio_latest;
prev_phoneme_position = event->audio_position;
}
}
}
#ifdef deleted
if(event->type == espeakEVENT_SENTENCE)
{
@@ -286,7 +355,7 @@ STDMETHODIMP CTTSEngObj::SetObjectToken(ISpObjectToken * pToken)
gEmphasis = 0;
gSayas = 0;
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,path_install,0);
espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,path_install,1);
espeak_SetVoiceByName(voice);
espeak_SetSynthCallback(SynthCallback);
@@ -654,7 +723,7 @@ STDMETHODIMP CTTSEngObj::Speak( DWORD dwSpeakFlags,
m_ullAudioOff = 0;
m_OutputSite = pOutputSite;
pOutputSite->GetEventInterest(&event_interest);
xVolume = gVolume;
xSpeed = gSpeed;
@@ -694,6 +763,10 @@ STDMETHODIMP CTTSEngObj::Speak( DWORD dwSpeakFlags,
}
audio_latest = 0;
prev_phoneme = 0;
prev_phoneme_time = 0;
prev_phoneme_position = 0;
size = ProcessFragList(pTextFragList,TextBuf,pOutputSite,&n_text_frag);
if(size > 0)

+ 7
- 1
src/numbers.cpp View File

@@ -966,7 +966,13 @@ int Translator::LookupNum3(int value, char *ph_out, int suppress_null, int thous

Lookup("_0C",ph_100);

if((hundreds >= 10) && (((langopts.numbers & 0x0800) == 0) || (hundreds != 19)))
if(((langopts.numbers & 0x0800) != 0) && (hundreds == 19))
{
// speak numbers such as 1984 as years: nineteen-eighty-four
// ph_100[0] = 0; // don't say "hundred", we also need to surpess "and"
}
else
if(hundreds >= 10)
{
ph_digits[0] = 0;


+ 1
- 1
src/speak.cpp View File

@@ -429,7 +429,7 @@ static void StopSpeak(int unused)
int *flag;
int val;
};
static int optind;
int optind;
static int optional_argument;
static const char *arg_opts = "afklpsvw"; // which options have arguments
static char *opt_string="";

+ 1
- 1
src/synthdata.cpp View File

@@ -35,7 +35,7 @@
#include "translate.h"
#include "wave.h"

const char *version_string = "1.39.12 24.Oct.08";
const char *version_string = "1.39.14 02.Nov.08";
const int version_phdata = 0x013900;

int option_device_number = -1;

+ 16
- 2
src/tr_languages.cpp View File

@@ -121,6 +121,9 @@ Translator *SelectTranslator(const char *name)
int name2 = 0;
Translator *tr;

static const unsigned char stress_amps_sk[8] = {16,16, 20,20, 20,24, 24,22 };
static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210};

// convert name string into a word of up to 4 characters, for the switch()
while(*name != 0)
name2 = (name2 << 8) + *name++;
@@ -552,6 +555,19 @@ SetLengthMods(tr,3); // all equal
}
break;

case L('l','v'): // latvian
{
tr = new Translator();
SetupTranslator(tr,stress_lengths_sk,stress_amps_sk);

tr->langopts.stress_rule = 0;
tr->langopts.spelling_stress = 1;
tr->charset_a0 = charsets[4]; // ISO-8859-4
tr->langopts.numbers = 0x409;
tr->langopts.stress_flags = 0x16;
}
break;

case L('m','k'): // Macedonian
{
static wchar_t vowels_cyrillic[] = {0x440, // also include 'р' [R]
@@ -673,8 +689,6 @@ SetLengthMods(tr,3); // all equal
case L('s','k'): // Slovak
case L('c','s'): // Czech
{
static const unsigned char stress_amps_sk[8] = {16,16, 20,20, 20,24, 24,22 };
static const short stress_lengths_sk[8] = {190,190, 210,210, 0,0, 210,210};
static const char *sk_voiced = "bdgjlmnrvwzaeiouy";

tr = new Translator();

Loading…
Cancel
Save