Browse Source

[1.31]

Return espeakEVENT_MARK events in AUDIO_OUTPUT_PLAYBACK mode.
New phoneme [ _;_ ]  a pause which ends intonation for a clause (the equivalent of a comma).
lang=en-r: adjusted phonemes


git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@129 d46cf337-b52f-0410-862d-fd96e6ae7743
master
jonsd 17 years ago
parent
commit
7580102e79
59 changed files with 379 additions and 465 deletions
  1. 4
    0
      dictsource/cs_list
  2. 14
    16
      dictsource/dict_phonemes
  3. 25
    25
      dictsource/en_list
  4. 39
    39
      dictsource/en_rules
  5. 1
    0
      dictsource/es_rules
  6. 26
    6
      dictsource/fr_list
  7. 20
    28
      dictsource/fr_rules
  8. 29
    6
      dictsource/jbo_list
  9. 3
    0
      dictsource/jbo_rules
  10. 4
    0
      docs/commands.html
  11. 2
    2
      docs/index.html
  12. 5
    1
      docs/languages.html
  13. 1
    4
      espeak-data/voices/en/en-r
  14. 1
    0
      espeak-data/voices/es
  15. 60
    132
      phsource/compile_report
  16. BIN
      phsource/d/tap4
  17. 8
    0
      phsource/ph_english
  18. 30
    60
      phsource/ph_english_us
  19. 1
    1
      phsource/ph_slovak
  20. 7
    21
      phsource/ph_spanish
  21. 4
    4
      phsource/ph_tamil
  22. 5
    17
      phsource/phonemes
  23. BIN
      phsource/vdiph/8u
  24. BIN
      phsource/vdiph/Vu_4
  25. BIN
      phsource/vdiph/aae
  26. BIN
      phsource/vdiph/aoo
  27. BIN
      phsource/vdiph/ooi_3
  28. BIN
      phsource/vdiph/ooi_4
  29. BIN
      phsource/vdiph/vowelchart.png
  30. BIN
      phsource/vdiph2/ei_4
  31. BIN
      phsource/vdiph2/vowelchart.png
  32. BIN
      phsource/voc/vj
  33. BIN
      phsource/voc/zh_2
  34. BIN
      phsource/vowel/V_6
  35. BIN
      phsource/vowel/aa_8
  36. BIN
      phsource/vowel/u_bck2
  37. BIN
      phsource/vowel/vowelchart.png
  38. BIN
      phsource/vwl_en_us/3_us
  39. BIN
      phsource/vwl_en_us/@r_us
  40. BIN
      phsource/vwl_en_us/V
  41. BIN
      phsource/vwl_en_us/a
  42. BIN
      phsource/vwl_en_us/ai@
  43. BIN
      phsource/vwl_en_us/ar
  44. BIN
      phsource/vwl_en_us/ee
  45. BIN
      phsource/vwl_en_us/ei
  46. BIN
      phsource/vwl_en_us/er
  47. BIN
      phsource/vwl_en_us/ii
  48. BIN
      phsource/vwl_en_us/ir
  49. BIN
      phsource/vwl_en_us/oo
  50. BIN
      phsource/vwl_en_us/oor
  51. BIN
      phsource/vwl_en_us/or
  52. 14
    12
      src/event.cpp
  53. 16
    73
      src/extras.cpp
  54. 28
    7
      src/intonation.cpp
  55. 2
    0
      src/phoneme.h
  56. 17
    4
      src/readclause.cpp
  57. 6
    0
      src/setlengths.cpp
  58. 2
    2
      src/synthdata.cpp
  59. 5
    5
      src/tr_languages.cpp

+ 4
- 0
dictsource/cs_list View File

@@ -140,6 +140,10 @@ si $u


// Prepositions
// the $alt2 prepositions should also be included in cs_rules
// as prefixes, so "na-" (for example) is removed from the combined
// word before the pronuciation of the main word is determined.

skrz $u $brk $alt2 // though
skrze $u $pause // through
pro $u $pause $alt2 // for

+ 14
- 16
dictsource/dict_phonemes View File

@@ -43,9 +43,9 @@ x z
Dictionary de_dict

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

* : ; b C C2 d D
dZ f g h j k l m
@@ -69,8 +69,8 @@ Dictionary en_dict
0 3 3: @ @- @2 @5 @L
a a2 A: A@ aa aI aI@ aU
aU@ E e@ eI I I2 i: i@
IR O O: o: O@ o@ OI oU
O~ U u: U@ V VR
i@3 IR O O: o: O@ o@ OI
oU O~ U u: U@ V VR

: ; b C d D dZ f
g h j k l m n N
@@ -281,7 +281,7 @@ u U uI u~ y
g h j k l l^ m n
N n^ p Q r R r- s
S s# s; t T tS ts v
w x z Z
w w2 x z Z


Dictionary ro_dict
@@ -340,10 +340,10 @@ Dictionary zh_dict
i i. i[ iou o o- ou u
uai y

: f h j k kh l m
n N p ph r R s s.
S; t th ts ts. ts. tS; tS;
tsh v w x z z.
: f j k kh l m n
N p ph r R s s. S;
t th ts ts. ts. tS; tS; tsh
v w x z z.


Dictionary jbo_dict
@@ -358,11 +358,10 @@ t tS v w x z Z

Dictionary th_dict

a a: e E: i i: o O
O: u y
3 a E i i: O O:

c d h k l m n N
p s t
: c d h k l m n
N p s t2


Dictionary hbs_dict
@@ -379,8 +378,7 @@ ts tS; v x z Z

Dictionary id_dict

@ a aI aU e E i o
O u
@ a aI aU E i O

* ? b d dZ f g h
j k l m n N n^ p

+ 25
- 25
dictsource/en_list View File

@@ -253,7 +253,7 @@ adamant ad@m@nt
add ad
addict adIkt $onlys
addon ad0n
adher adh'i@
adher adh'i@3
adieu a2dju:
adieus a2dju:z
adieux a2dju:z
@@ -417,7 +417,7 @@ aubergine oUb3Zi:n
auger O:g3
aurora $2
aussie 0zI
austere O:st'i@
austere O:st'i@3
authority a2T0rItI2
authoritative O:T'0rIt@tIv
autograph O:t@graf
@@ -495,7 +495,7 @@ breathless brETl@s
brethren brEDr@n
bridesmaid braIdzmeId
brigade $2
brigadier brIga2d'i@
brigadier brIga2d'i@3
brochure broUS3
brooch broUtS
budgerigar bVdZ@rIgA@
@@ -533,11 +533,11 @@ canton kant0n
caprice ka2pr'i:s
caramel kar@mEl
caravan kar@van
career k@r'i@
career k@r'i@3
caress k@rEs
carpel kA@p@l
cascade $2
cashmere kaSm'i@
cashmere kaSm'i@3
catarrh k@tA@
catholic kaTlIk
cavalier $3
@@ -647,7 +647,7 @@ convolute k0nv@l'u:t
coop ku:p
cooper ku:p3
coordinate koU'O:dIneIt $verb
copier k0pi@
copier k0pi@3
coral k0r@L
coronet k0r@nEt
corporal kO@pr@L
@@ -835,7 +835,7 @@ facade f@sA:d
façade f@sA:d
faeces fi:si:z
fallible fal@b@L
familiar f@mIli@
familiar f@mIli@3
famine famIn
farewell $2
fasten faas@n
@@ -951,11 +951,11 @@ helix hi:lIks
hello h@loU
henceforth hEnsfo@T
hercules h3:kjUli:z
hereto hi@'tu:
hereto hi@3'tu:
hermaphrodite $2
hermes h3:mi:z
herod hEr@d
heroe hi@oU
heroe hi@roU
heroic hI2roUIk
heroin hEroUIn
heroism hEroUIz@m
@@ -1369,13 +1369,13 @@ phoenix fi:nIks
photograph foUt@graf
piano pI2anoU
piecemeal p'i:sm,i:l
pier pi@
pier pi@3
pigeon pIdZ@n
pigsty pIgstaI
pilot paIl@t
pineapple p'aInap@L
pint paInt
pioneer paI@n'i@
pioneer paI@n'i@3
pious paI@s
pipette pIp'Et
piquant pi:k@nt
@@ -1468,7 +1468,7 @@ radon reId0n
ragged ragId
rainforest r'eInf,0rIst
rajah rA:dZA:
rapier reIpi@
rapier reIpi@3
rapport rap'o@
rarest re@r@st
rascal raask@L
@@ -1516,7 +1516,7 @@ reign reIn
rein reIn
reined reInd
reining reInIN
reindeer reIndi@
reindeer reIndi@3
reinvent ri:Inv'Ent
refinery rI2faIn@rI2
relative rEl@tIv
@@ -1555,7 +1555,7 @@ retaliatory rIt'ali:@t@rI2
retrial ri:traI@l
retry ri:traI
reuse ri:'ju:z
rever rI2vi@ // revered
rever rI2vi@3 // revered
rhododendron roUd@d'Endr@n
rhetoric rEt@rIk $onlys
rhinoceros raIn'0s@r@s
@@ -1613,7 +1613,7 @@ secretive si:kr@tI2v
secretary sEkr@trI2
sedate sI2deIt
separate sEp@-r@t
separate sEp@reIt $verb
separate sEp3reIt $verb
semen si:m@n
semicolon sEmIk'oUl0n
senator sEn@t3
@@ -1624,8 +1624,8 @@ series si:ri:z
serene s@ri:n
sergeant sA@dZ@nt
settee $2
severe sIv'i@ $only
severely sIv'i@lI2 $verbf
severe sIv'i@3 $only
severely sIv'i@3lI2 $verbf
several sEvr@L
shampoo $2
sheriff S'ErIf
@@ -1643,7 +1643,7 @@ silhouette sIlUw'Et
simon saIm@n
simultaneous $3
singly sINglI2 $verbf
sincerest sIns'i@@st
sincerest sIns'i@r@st
sinew sInju:
sir s,3:
?5 sir s,VR
@@ -1665,7 +1665,7 @@ sonar soUnA@
sonny sVnI2
sooth su:D
soundbite saUndbaIt
souvenir su:v@n'i@
souvenir su:v@n'i@3
sorbet sO@beI
soviet soUvi@t
spaghetti spag'EtI2
@@ -1737,7 +1737,7 @@ tariff tarIf
taskforce t'askf,o@s
tatar tA:t3
tearing te@r-I2N
tear ti@ $onlys
tear ti@3 $onlys
tear te@ $verb
teddybear t'Ed,Ib,e@
ten tEn // untenable
@@ -2055,7 +2055,7 @@ Johannesburg $2
Kalgoorlie kalgU@lI2
Karachi k@rA@tSI2
Kiev ki:Ev
Khmer kmi@
Khmer kmi@3
Korea kOr'i:@
Korean kOr'i:@n
Kuala kwA:la2
@@ -2145,7 +2145,7 @@ Winnipeg wInI2pEg
Wisconsin wIsk'0nsIn
Wyoming waI'oUmI2N
Xhosa kO:s@
zaire zaI'i@
zaire zaI'i@3
zimbabwe zI2mbA:bwI2

Aaron e@r@n
@@ -2309,7 +2309,7 @@ zhivago ZI2vA:goU

(first place) f'3:st_pl,eIs
?5 (first place) f'IRst_pl,eIs
(here and there) h'i@||@nd||D'e@
(here and there) h'i@3||@nd||D'e@
(most of) moUst||@v
(such as) sVtS||_a2z $pause

@@ -2411,7 +2411,7 @@ beyond bI2j,0nd $strend2
beside bI2s,aId $strend2
between bI2tw,i:n $strend2
together t@g,ED3 $strend2
near ,ni@ $strend2
near ,ni@3 $strend2
thence DEns


@@ -2536,7 +2536,7 @@ begun bI2gVn
become bI,kVm $strend2
became bI,keIm $strend2

we're %wi@
we're %wi@3
you're %jO@
?6 you're %jU@
they're %DeI3

+ 39
- 39
dictsource/en_rules View File

@@ -85,7 +85,7 @@
_) aer (o e@
ae (l eI
h) ae (m i:
h) aemorrh Em@r
h) aemorrh Em3r
aer e@
_c) aer %e@
r) aer 'A@
@@ -744,7 +744,7 @@
_) aph (@ a2f
ap (ath ap
_) ap (e eIp
aper (ie a2pi@
aper (ie a2pi@r
_) aperi (t a2pEr@
_) aper (t ap@
_) aph (id eIf
@@ -828,7 +828,7 @@
&z) ar (d_ 3
h) ar (ass @r
&m) aran @ran
sep) ar (at @r
sep) ar (at 3r
w) ar (e e@
k) ar (y ar
c) arbo (h ,A@boU
@@ -1531,7 +1531,7 @@
_) de (t@ dI2
de (tail di:
deter dI2t3:
deter (i dI2ti@
deter (i dI2ti@r
detest dI2tEst
_) de (th d%i:
de (ton dE
@@ -1637,7 +1637,7 @@
&) ecy (_ @sI2
ee i:
ee (m 'i:
eer 'i@
eer 'i@3
t) ee (n_ 'i:
ees (_ i:z
ch) eese i:z
@@ -1775,12 +1775,12 @@
_l) ea (mi E
b) ea (n i:
XC) ea (n_ i:
ear i@
ear i@3
_) ear (l 3:
_) ear (n 3:
ear (th 3:
b) ear e@
b) ear (d i@
b) ear (d i@3
h) ear (d 3:
h) ear (th A@
h) ear (k A@
@@ -1793,7 +1793,7 @@
t) ear (A e@
sw) ear e@
w) ear e@
w) ear (y i@
w) ear (y i@3
y) ear (n 3:
eas (an Ez
eas (en Ez
@@ -1878,7 +1878,7 @@
@) ei (n_ i:
b) ei (ng i:I
eir e@
w) eir i@
w) eir i@3
l) ei (s E
th) ei (sC i:I
_s) eis (m aIz
@@ -2107,13 +2107,13 @@
g) eral (d Er@L
er (bial '3:
_d) er (b A@
&) er (A @r
&) er (A 3r
@) er (o_ 'e@r
eri (A 'i@rI2
er (iC Er
&) er (ing @r
er (ie_ @r
er (ie @r
&) er (ing 3r
er (ie_ 3r
er (ie 3r
eries (_S2i z
&) er (ous =@r
m) er (c 3:
@@ -2125,21 +2125,21 @@
_qu) er 3:
c) er (am I2r
&) ere (_ 3
XC) ere (_ i@
sph) ere (_ i@
c) ere (_ 'i@
XC) ere (_ i@3
sph) ere (_ i@3
c) ere (_ 'i@3
i) ere (_ I2e@
ev) ere (_ i@
ev) ere (_ i@3
mp) ere (_ e@
_h) ere i@
_h) ere i@3
h) ere (f ErI2
h) ere (di I2rE
h) ere (s Er@
h) ere (t I2rE
@) er (ence_ r
er (ent_ r
adh) er (e 'i@
coh) er (e 'i@
adh) er (e 'i@3
coh) er (e 'i@3
h) er (ed I2r
c) ere (mon ErI2
h) er (en i@r
@@ -2188,8 +2188,8 @@
_v) ery ErI2
_ev) ery rI2
qu) ery i@rI2
z) er (o i@
_C) er (o_ i@
z) er (o i@r
_C) er (o_ i@r
er (rA E
err (_ 3:

@@ -2584,7 +2584,7 @@
_l) io (n aI@
z) io (n aI@
r) ior (_ I3
&) ior (+ i@
&) ior (+ i@3
&) ior (_ j3
iority I'0rItI2
iou (rA j@
@@ -2677,7 +2677,7 @@
al) ia (nt I2@
_p) ia (nA i@
iar aI@
@l) iar (_ i@
@l) iar (_ i@3
iara (_ I'A:r@
iarch I2A@k
iard (_ I23d
@@ -2723,12 +2723,12 @@
@) ienne (_ I'En
cl) ie (nt aI@
&) ier (y I2@r
ier i@
&) ier (_NS2i @
ier i@3
&) ier (_NS2i 3
_h) ie (r aI@
pl) ier (_ aI@
_Cr) ier aI@
ier (c i@
ier (c i@3
ierre (_ I2e@
ie (t aI@
@) ie (th i@
@@ -2898,7 +2898,7 @@
_) inter (@P5 ,Int3 // prefix
_) inter (AP5 ,Int@r
inter (est Int@r
interfer Int@f'i@
interfer Int@f'i@3
_) int (erio+ I2nt
_) inter (n_ I2nt3:
_) inter (nal I2nt3:
@@ -3002,7 +3002,7 @@
irer (_ aI@r@
ir 3:
?5 ir IR
@C) ir (_ i@
@C) ir (_ i@3
st) ir (_ 3:
?5 st) ir (_ IR
ir (i Ir
@@ -3012,7 +3012,7 @@
ir (o I2r
g) ir (o aIr
_C) ir (o_ aIr
@) ir (o_ 'i@
@) ir (o_ 'i@r
_) iron aI@n
iron (A aIr'0n
v) iro (n aIr@
@@ -4081,7 +4081,7 @@
per (petr p3:
per (ple p3
per (sis p3
persever p3:sIv'i@
persever p3:sIv'i@3
per (sp p@
perspi (ra p3:sp@
per (su p3
@@ -4613,9 +4613,9 @@
l) u (ck V
ucul VkjUl
n) ucle ju:klI
n) uclear ju:kli@
n) uclear ju:kli@3
?3 n) ucle u:klI
?3 n) uclear u:kli@
?3 n) uclear u:kli@3
@) u (ctive 'V
u (guC V
f) u (gal 'ju:
@@ -4825,10 +4825,10 @@
b) ur (e ju:@r
g) ure (_ 3
nj) ure (_ 3
il) ure (_ i@
en) ure (_ j@
r) ure (_ i@
&s) ure (_ j@
il) ure (_ i@3
en) ure (_ j3
r) ure (_ i@3
&s) ure (_ j@3
icat) ure (_ jU@
sat) ur (d 3
iz) ure 3
@@ -4848,7 +4848,7 @@
wh w
wr r
C) we (_ =wI
were (w wi@
were (w wi@3
th) west w'Est
we (w wi:
where we@
@@ -5021,7 +5021,7 @@
Ee (d i:
EE (_ i:
Ee (_ 'i:
Eer (_ 'i@
Eer (_ 'i@3
Ei (n_ i:
Ei (_ aI
El (_ @L

+ 1
- 0
dictsource/es_rules View File

@@ -70,6 +70,7 @@
_) i (_ i
i i
i (A J^
C) i (A j
l) i (A %i
r) i (A %i


+ 26
- 6
dictsource/fr_list View File

@@ -7,7 +7,7 @@
//


// Letters
// Letters names
// If a letter has a "word" pronunciation which is different from its
// "letter" name, then include the letter name here, with the letter
// prefixed by a _ character.
@@ -15,19 +15,43 @@
_à a:aksA~gRav
â a:aksA~siRkO~flEks
ä a:tRema
b be
c se
ç sesedij
d de
e @
ë @:tRema
é @:aksA~Egy
è @:aksA~gRav
ê @:aksA~siRkO~flEks
ï i:tRema
ë @:tRema
f Ef
g Ze
h aS
i i
ï i:tRema
j Zi
k ka
l El
m Em
n En
ñ Entilde
o o
ô o:aksA~siRkO~flEks
ö o:tRema
p pe
q ky
r ER
s Es
t te
u y
ù y:aksA~gRav
û y:aksA~siRkO~flEks
ü y:tRema
v ve
w dubl@v'e
x iks
z zEd
_y i:gR'Ek


@@ -173,10 +197,6 @@ utf $abbrev
xfce iksEfse@
xy $abbrev

ii d'Y $abbrev // roman numerals
iii tRw'a $abbrev
iv k'atR $abbrev


dr dOkt WR $dot $capital
prof $dot

+ 20
- 28
dictsource/fr_rules View File

@@ -14,8 +14,6 @@


.group a


ae (_ e // reggae vitae
aen A~ // caen (diff Cicero: aA~)
ae ae // maestro
@@ -46,14 +44,14 @@
ay Ej // paye
a a // bateau


.group b
_) b (_ be // b
bb b // abbé
om) b (_ // plomb applomb
b b // aube


.group c
_) c (_ se // c
c' s // s
cch k // bacchanale
cc (Y ks // accéder
@@ -89,7 +87,6 @@


.group d
_) d (_ de
dd d // addition
_) d' (P2 d
_lan) d (_ d // land
@@ -110,9 +107,8 @@
r) d (_ // lourd placard
d d // don bled

.group e

_) e (_ @ // e
.group e
e (Ce_ E
eau o // bateau cheveaux
j) e (a // Jean Jeanne
@@ -322,12 +318,13 @@

e @ // menue


.group ë
u) ë // ambiguë
ë E // citroën noël


.group f
_) f (_ Ef
f f
f (f
_neu) f (_ans v // liaison: neuf ans
@@ -335,7 +332,6 @@


.group g
_) g (_ Ze
g g

su) gg (Y gZ // suggérer suggestif
@@ -376,12 +372,12 @@
g (_ g // grog gag goulag
g Z // congé george


.group h
_) h (_ aS
h // ahuri


.group i
_) i (_ i
i i // cri

ie (ment i // remerciement balbutiement
@@ -415,25 +411,25 @@
î i // abîme
în (i in // vînimes


.group ï
ïn (C E~ // coïncider
ïn (_ E~
a) ï j // aïeul
ï i // ambiguïté


.group j
_) j (_ Zi
j Z // adjoint joujoux


.group k
_) k (_ ka
k k // kafka
ket (_ kEt // basket
kets (_ kEt // basket


.group l
_) l (_ El
l l // lit
ll l // aller
_) l' (P2 l
@@ -443,13 +439,11 @@


.group m
_) m (_ Em
m m // film
mm m // pomme


.group n
_) n (_ En
n n // une
nn n
ng (_ N
@@ -459,9 +453,8 @@
A) ng (_ N // parking meeting
nn n // panne

.group o
_) o (_ o

.group o
cr) oc (_ o // escroc

o (ch o // cochon
@@ -532,12 +525,13 @@

o O // sobre notions émotions


.group ô
ôt (_ o // rôt
ô o // cône


.group p
_) p (_ pe
p p // pas
p (p // appliquer
ph f // phrase
@@ -559,8 +553,8 @@
se) pt (_ t // sept
se) pt (iè t // septième


.group q
_) q (_ ky
q k // coq
qu k // quatre
_) que (_ k@ // que
@@ -568,8 +562,8 @@
_) qu' (P3 k // qu'il
n) q (_ k // cinq cent


.group r
_) r (_ ER
right _^_EN // copyright
_su) rr RR // surréaliste
ou) rr RR // courrai
@@ -577,8 +571,8 @@
rr R // erreur
r r // rien


.group s
_) s (_ Es
s s // verser sien

s (_S1 z2
@@ -627,8 +621,8 @@
s (j z
s (v z


.group t
_) t (_ te
t t // bataille
V) t (_ t2 // silent at end of verb unless next word starts with a vowel
t (_ // silent at end of word
@@ -684,7 +678,6 @@ V) t (_ t2 // silent at end of verb unless next word starts with a vowe


.group u
_) u (_ y
u y // cruel nuage brut
ui w^i

@@ -705,18 +698,17 @@ V) t (_ t2 // silent at end of verb unless next word starts with a vowe
g) u (ï y // ambiguïté
g) u (ë y // ambiguë


.group v
_) v (_ ve
v v


.group w
_) w (_ dubl@v'e
w w
ware (_ _^_EN // hardware, software


.group x
_) x (_ iks
x ks
xs ks // lexique lexicaux vox
_e) x (A gz // exagérer exemple
@@ -754,8 +746,8 @@ V) t (_ t2 // silent at end of verb unless next word starts with a vowe

yn E~ // laryngite


.group z
_) z (_ zEd
z z
zz z
t) z s // tzigane

+ 29
- 6
dictsource/jbo_list View File

@@ -1,4 +1,9 @@

// This file is UTF8 encoded
// Spelling to phoneme words for Lojban (an artificial constructed language).

// Note: initial/final "." has already been removed

// Numbers
_0 no
_1 pa
@@ -48,12 +53,30 @@ e'o $u+ // request
po'e $u+ // of
zo'e $u+ // pronoun

i $u+ $pause

i i_: $u // sentence break (recognised by eSpeak program). Try a short pause after ".i"

// end-of-clause [_;_] before these
noi _;_nOI $u
poi _;_pOI $u
no'u _;_nohu $u
po'u _;_pohu $u
goi _;_gOI $u

ija _;_iZa // should this series be unstressed?
ijanai _;_iZanaI
ije _;_iZe
ije'i _;_iZehi
ijenai _;_iZenaI
ijo _;_iZo
ijonai _;_iZonaI
inaja _;_inaZa

to _::to $u // start parenthesis, pause but don't raise intonation

// terminators (include a pause after)
ku ku_:
boi bOI_:
vau vaU_:
kei keI_:
toi tOI_:
ku ku_:: $u
boi bOI_:: $u
vau vaU_:: $u
kei keI_:: $u
toi tOI_:: $u

+ 3
- 0
dictsource/jbo_rules View File

@@ -2,6 +2,7 @@
// This file is UTF8 encoded
// Spelling to phoneme rules for Lojban (an artificial constructed language).

// Note: initial/final "." has already been removed

.group a
a a
@@ -33,6 +34,8 @@
.group g
g g

_) gi ('A_ _;_gi

.group h
h h


+ 4
- 0
docs/commands.html View File

@@ -162,6 +162,10 @@ The same as <strong>--compile</strong>, but source line numbers from the *_rules
<dd>
Speaks the names of punctuation characters when they are encountered in the text. If &lt;characters&gt; are given, then only those listed punctuation characters are spoken, eg. <code> --punct=".,;?"</code>
<p>
<dt><strong>--split [="&lt;minutes&gt;"]</strong><br>
<dd>
Used with <strong>-w</strong>, it starts a new WAV file every <code>&lt;minutes&gt;</code> minutes, at the next sentence boundary.
<p>
<dt>
<strong>--voices [=&lt;language code&gt;]</strong><br>
<dd>Lists the available voices.<br>

+ 2
- 2
docs/index.html View File

@@ -37,7 +37,7 @@
</strong></font>
</td>
<td>
eSpeak is a compact open source software speech synthesizer for English and other languages. &nbsp;
eSpeak is a compact open source software speech synthesizer for English and other languages, for Linux and Windows. &nbsp;
<a href="http://espeak.sourceforge.net/"><strong>http://espeak.sourceforge.net</strong></a>
<p>
eSpeak produces good quality English speech. It uses a different synthesis method from other open source TTS engines, and sounds quite different. It's perhaps not as natural or "smooth", but I find the articulation clearer and easier to listen to for long periods.
@@ -65,7 +65,7 @@ A Windows version of the espeakedit program is also available.

<hr>
<strong>Languages</strong>. The eSpeak speech synthesizer supports several languages, however in most cases these are initial drafts and need more work to improve them. Assistance from native speakers is welcome for these, or other new languages. Please contact me if you want to help.<p>
eSpeak does text to speech synthesis for the following languages, some better than others. Afrikaans, Croatian, Czech, Dutch, English, Esperanto, Finnish, French, German, Greek, Hindi, Hungarian, Icelandic, Italian, Norwegian, Polish, Portuguese, Romanian, Russian, Slovak, Spanish, Swahili, Swedish, Vietnamese, Welsh. See <a href="languages.html">Languages</a>.
eSpeak does text to speech synthesis for the following languages, some better than others. Afrikaans, Cantonese, Croatian, Czech, Dutch, English, Esperanto, Finnish, French, German, Greek, Hindi, Hungarian, Icelandic, Italian, Lojban, Macedonian, Mandarin, Norwegian, Polish, Portuguese, Romanian, Russian, Serbian, Slovak, Spanish, Swahili, Swedish, Vietnamese, Welsh. See <a href="languages.html">Languages</a>.
<hr>
<strong>espeakedit</strong> is a GUI program used to prepare and compile phoneme data. It is now available for download. Documentation is currently sparse, but if you want to use it to add or improve language support, let me know.
<hr>

+ 5
- 1
docs/languages.html View File

@@ -3,7 +3,6 @@

<head>
<title>eSpeak Speech Synthesizer</title>
<meta name="GENERATOR" content="Quanta Plus">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
@@ -199,6 +198,11 @@ These languages are only initial naive implementations which have had little or
</dd>
<p>
<dt>
<strong>jbo &nbsp;Lojban</strong><br>
<dd>An artificial language.
</dd>
<p>
<dt>
<strong>la &nbsp;Latin</strong><br>
<dd>Stress rules are implemented, but it needs text where long vowels are marked with macrons.
</dd>

+ 1
- 4
espeak-data/voices/en/en-r View File

@@ -8,11 +8,8 @@ phonemes en_us
dictrules 3 6
option 12 1 // reduce [t]

stressLength 145 120 175 175 0 0 260 270
stressLength 145 125 170 170 0 0 265 280
stressAmp 17 16 20 20 20 22 23 20

//replace 03 I i
//replace 03 I2 i

formant 2 101 100 100
formant 3 101 100 100

+ 1
- 0
espeak-data/voices/es View File

@@ -2,4 +2,5 @@ name spanish
language es
gender male

intonation 3


+ 60
- 132
phsource/compile_report View File

@@ -1,50 +1,48 @@
45 phoneme tables
43 phoneme tables
new total
base 99 99
base2 24 118
en 53 147
base 98 98
base2 24 117
en 54 147
en_n 30 147
en_us 37 147
en_us 34 147
en_sc 39 149
en_rp 34 147
en_wm 30 147
en_wi 30 147
af 38 131
cy 29 125
de 33 126
eo 13 111
jbo 4 112
fi 40 130
fr 35 122
fr_ca 11 122
hi 50 135
ta 13 137
hu 23 115
nl 28 122
pl 15 110
sk 29 128
cs 6 128
hr 20 133
mk 3 134
sr 14 133
ru 38 129
it 17 121
la 21 117
es 9 120
pt 27 134
pt_pt 20 134
ro 36 142
el 8 118
grc 12 123
sv 25 121
no 28 125
is 32 124
vi 42 137
zhy 40 132
zh 61 146
sw 14 108
th 50 142
id 14 120
af 38 130
cy 29 124
de 33 125
eo 13 110
jbo 4 111
fi 40 129
fr 35 121
fr_ca 11 121
hi 50 134
ta 13 136
hu 23 114
nl 28 121
pl 15 109
sk 29 127
cs 6 127
hr 20 132
mk 3 133
sr 14 132
ru 38 128
it 17 120
la 21 116
es 7 117
pt 27 133
pt_pt 20 133
ro 36 141
el 8 117
grc 12 122
sv 25 120
no 28 124
is 32 123
vi 42 136
zhy 40 131
zh 61 145
sw 14 107

Data file Used by
b/b [b] base
@@ -118,8 +116,8 @@ d/dr [*] base
[d] sw
d/tap [*;] ro
d/tap1 [*] base
d/tap2 [*2] base
d/tap3 [*] base
d/tap4 [r] es
d/tap_i [*;] ro
d/xd [d] base
[d[] base
@@ -136,7 +134,6 @@ d/xd [d] base
[d] sw
d/xd_pzd [d;] pl
[d;] ru
d/x_tap [*2] base
dzh/dzh [dZ] base
[dZ;] base
[dz;] base
@@ -164,8 +161,6 @@ dzh/xdzh [dZ] base
dzh/xdz_pzd [J] base
[J2] hi
envelope/p_214 [214] zh
[5] th
envelope/p_451 [3] th
envelope/p_512 [8] vi
envelope/p_fall [2] vi
[7] vi
@@ -177,8 +172,6 @@ envelope/p_fall [2] vi
[22] zh
[33] zh
[53] zh
[1] th
[2] th
envelope/p_fallrise [4] vi
envelope/p_level [1] vi
[3] zhy
@@ -189,7 +182,6 @@ envelope/p_rise [3] vi
[2] zhy
[5] zhy
[35] zh
[4] th
envelope/vi_5 [5] vi
envelope/vi_5amp [5] vi
envelope/vi_6 [6] vi
@@ -518,8 +510,6 @@ r/xr [(@)] base
ufric/ch [C] base
[J^] base
[C2] de
[J2] es
[J3] es
ufric/ch_sr [h] sr
[x] sr
ufric/f [f] base
@@ -599,7 +589,6 @@ ustop/k_ [k] base
[k] el
[kh] zh
[k] sw
[kh] th
ustop/ki [c] base
[k] base
[k] base2
@@ -648,13 +637,11 @@ ustop/k_unasp [k] base
[k] el
[k] zhy
ustop/k_unasp_ [k] zh
[k] th
ustop/null [?] base
ustop/p [p] base
[p] fr
[ph] hi
[p] zhy
[ph] th
ustop/p_ [p] base
[p] fr
[ph] hi
@@ -688,7 +675,6 @@ ustop/p_unasp [p] base
[p] la
[p;] ro
[p] zh
[p] th
ustop/p_unasp_ [p] base2
[p] fi
[p] hi
@@ -711,7 +697,6 @@ ustop/t_ [t] base
[t] sk
[t] el
[th] zh
[th] th
ustop/t_dnt [t] base
[t[] base
[t] base2
@@ -752,9 +737,7 @@ ustop/t_short [t.] hi
[t] sk
[t] el
ustop/tsh_pzd [tS;] zh
[ch] th
ustop/tsh_pzd_unasp [tS;] zh
[c] th
ustop/tsh_sr.wav [tS] sr
ustop/ts_pzd [tS;] base
[ts;] base
@@ -772,11 +755,9 @@ ustop/ts_sr.wav [tS;] sr
[dZ;] sr
ustop/ts_unasp [ts] zh
ustop/t_unasp [t] zh
[t] th
vdiph/0i [OI] pt
[OI] grc
[OI] vi
[O:I] th
vdiph/0i_2 [OI] en_sc
[OI] en_wi
[AI] no
@@ -792,15 +773,13 @@ vdiph2/i@ [i@] en_n
vdiph2/i@_2 [i@] en_wm
vdiph2/ie [i@] en_wi
[ie] fi
[ia] th
[i:a] th
vdiph2/ii@ [i@] en
[i@3] en
vdiph2/ii@_3 [i@] vi
vdiph2/iioo [io] zh
vdiph2/iu [iU] base2
[iU] vi
[iu] zhy
[iU] th
vdiph2/iu_2 [iu] fi
vdiph2/iu_3 [iu] af
vdiph2/iu_4 [Iu] cy
@@ -813,15 +792,12 @@ vdiph2/oa [Oa] ro
vdiph2/o_oo [o@] en_wi
[o] is
vdiph2/u-@ [y@] vi
[y:a] th
vdiph2/u#@ [U@] en_sc
vdiph2/uo [uo] fi
vdiph2/uu@ [U@] en
[U@] en_n
[U@] en_wm
[u@] vi
[ua] th
[u:a] th
vdiph2/y#@ [Y@] af
[y@] zh
vdiph2/yu [yU] nl
@@ -829,6 +805,7 @@ vdiph2/yu [yU] nl
vdiph2/y-y# [yY] fi
vdiph/8u [oU] en_us
[ou] zh
vdiph/aae [aI] en_us
vdiph/aai [aai] zhy
vdiph/aai_2 [AI] af
[AY] cy
@@ -853,9 +830,6 @@ vdiph/ai [aI] base2
[aI] it
[aI] pt
[a:I] vi
[aI] th
[a:I] th
[aI] id
vdiph/ai_2 [aI] cy
[aY] cy
vdiph/ai_3 [aI] no
@@ -866,14 +840,12 @@ vdiph/ai_7 [aI] en_sc
[aI2] en_sc
[aI] is
vdiph/ai_en2 [aI] en
vdiph/aoo [aU] en_us
vdiph/au [aU] en
[aU] af
[a:U] vi
[aU] th
[a:U] th
vdiph/au# [aU] en_sc
vdiph/au_2 [aU] en_us
[au] zhy
vdiph/au_2 [au] zhy
vdiph/au_3 [aU] en_rp
vdiph/au_4 [aU] base2
[aU] cy
@@ -881,7 +853,6 @@ vdiph/au_4 [aU] base2
[aU] sk
[aU] it
[aU] is
[aU] id
vdiph/ee-e [E:] hi
vdiph/eei [EI] base2
[eI] en
@@ -890,14 +861,12 @@ vdiph/eei [EI] base2
[EI] vi
vdiph/eei_2 [eI] eo
[ei] fi
[eI] id
vdiph/eei_3 [eI] en_rp
[eI] sk
vdiph/eeu [EU] pt
[EU] grc
[EU] vi
[eu] zhy
[E:U] th
vdiph/eeu_2 [EU] la
[EU] pt_pt
vdiph/eeu_3 [aU] en_n
@@ -919,10 +888,7 @@ vdiph/eu [eU] base2
[eU] sk
[eU] pt
[eU] vi
[eU] th
[e:U] th
vdiph/eu_2 [eu] fi
vdiph/@i [@:I] th
vdiph/&i [&i] fi
[aI] hi
vdiph/@i_2 [eI] af
@@ -942,7 +908,6 @@ vdiph/oi [oI] base2
[oI] it
[OI] la
[oI] vi
[o:I] th
vdiph/oi_2 [oI] af
vdiph/ooi [OI] en
[OI] en_n
@@ -953,9 +918,9 @@ vdiph/ooi [OI] en
[OI] no
[oi] zhy
vdiph/ooi_2 [OI] af
vdiph/ooi_3 [OI] en_us
[OI] en_rp
vdiph/ooi_3 [OI] en_rp
[aI] en_wm
vdiph/ooi_4 [OI] en_us
vdiph/oou [oU] cs
[OU] grc
vdiph/ou [ou] fi
@@ -968,15 +933,12 @@ vdiph/@u [u:] en_wm
vdiph/@u_2 [oU] en_rp
vdiph/@u_3 [@U] ro
vdiph/@u_en [oU] en
[@U] id
vdiph/ui [uI] base2
[uI] en
[uI] eo
[ui] fi
[uI] vi
[ui] zhy
[uI] th
[u:I] th
vdiph/u-i [yI] vi
vdiph/ui_2 [uI] af
vdiph/ui_3 [uI] cy
@@ -1035,8 +997,6 @@ voc/dh [D] base
voc/dh_ [D] base
[D] es
voc/j [J^] base
[J3] es
voc/j2 [J2] es
voc/Q [Q] base
[Q^] base
voc/Q_ [Q] base
@@ -1061,7 +1021,7 @@ voc/v_ [B] base
[v2] nl
[v;] ro
[v] is
voc/v2 [v] es
voc/vj [v] base
vocw/dh [D] base
[D] es
vocw/Q [Q] base
@@ -1074,7 +1034,6 @@ vocw/v [B] base
[v] base
[v] fr
[v] ta
[v] es
[v;] ro
vocw/zh [Z] base
[Z;] ro
@@ -1109,7 +1068,6 @@ vowel/@ [@] base
[@] en_rp
[V] cy
[@4] hi
[@] th
vowel/@- [@-] base
[r*] hr
vowel/& [a] en_rp
@@ -1124,7 +1082,8 @@ vowel/0 [O] base2
vowel/0_2 [0] en_n
[O] pt_pt
[o] sw
vowel/0_3 [O:] en_us
vowel/0_3 [O] en_us
[O:] en_us
[O] en_sc
[0] en_rp
[A] hu
@@ -1142,7 +1101,6 @@ vowel/3_3 [3:] en_rp
vowel/3_en [3:] en
[e@] en_wm
[3:] af
[@:] th
vowel/@_4 [@] nl
[@] no
vowel/8_2 [U] en_us
@@ -1163,9 +1121,6 @@ vowel/a [a] en_n
[a] hr
[a] it
[a] zh
[a] th
[a:] th
[a] id
vowel/a# [a/] base2
[a2] en_sc
[a2] en_wi
@@ -1182,8 +1137,7 @@ vowel/a_2 [a] base2
[a] pt_pt
[a] ro
[a:] vi
vowel/a#_2 [a] ta
[&] hr
vowel/a#_2 [&] hr
[a2] sv
[&] is
[a/] sw
@@ -1209,13 +1163,13 @@ vowel/a#_3 [a2] en
[a] zhy
vowel/a_4 [a/] el
[a] vi
vowel/a_5 [a/] it
vowel/a_5 [a:] ta
[a/] it
[a] la
[a] sv
[a] sw
vowel/aa [a] fi
[A] fr_ca
[a:] ta
[A] no
[A:] no
[aa] zhy
@@ -1262,9 +1216,6 @@ vowel/e [e] base2
[e] pt_pt
[e] grc
[e] vi
[e] th
[e:] th
[e] id
vowel/e# [I] en_sc
[I2] en_sc
vowel/e_2 [eI] en_sc
@@ -1302,8 +1253,6 @@ vowel/ee_3 [&] af
vowel/ee_6 [E] en_n
[&] sk
[E3] sv
[E] th
[E:] th
vowel/e_mid [E] en_rp
[e] jbo
[E] fr_ca
@@ -1317,8 +1266,6 @@ vowel/e_mid [E] en_rp
[E] pt_pt
[E] no
[E] is
[E] id
[E2] id
vowel/e_mid2 [E] af
[E] de
[E2] de
@@ -1332,10 +1279,7 @@ vowel/e_mid2 [E] af
vowel/@_fnt [@] en_wi
[@2] en_wi
[@2] hr
vowel/@_hgh [@] en_us
[@2] en_us
[@5] en_us
[@] hr
vowel/@_hgh [@] hr
vowel/i [i] base2
[i:] en_n
[i] en_wm
@@ -1356,8 +1300,6 @@ vowel/i [i] base2
[i] zhy
[i] zh
[i] sw
[i] th
[i:] th
vowel/i# [i] en_us
[i] en_rp
[y:] cy
@@ -1374,8 +1316,6 @@ vowel/i_4 [i] fi
[i] hu
[I] it
[i] is
vowel/i#_4 [y] th
[y:] th
vowel/i_5 [i:] en_sc
vowel/i#_5 [y] pt_pt
[i/] pt_pt
@@ -1383,7 +1323,6 @@ vowel/i#_5 [y] pt_pt
vowel/i_6 [i:] en_us
[i] ta
[i] hr
[i] id
vowel/i_en [i:] en
[i] vi
vowel/i_fnt [i:] en_wi
@@ -1432,7 +1371,6 @@ vowel/@_low [3] en_rp
[@2] hi
[@] ro
[@2] no
[@] id
vowel/o [o] base2
[o:] en
[oU] en_wi
@@ -1448,9 +1386,6 @@ vowel/o [o] base2
[o:] sv
[o] zh
[u] zh
[o] th
[o:] th
[o] id
vowel/o- [o-] zh
vowel/o_2 [o:] cy
[o:] hi
@@ -1484,9 +1419,6 @@ vowel/oo [O:] en_sc
[O] sv
[O] no
[o] zhy
[O] th
[O:] th
[O] id
vowel/oo_1 [O:] en_n
[O:] en_rp
[O@] en_rp
@@ -1534,12 +1466,11 @@ vowel/u [u:] en_wi
[u:] de
[u] eo
[U] fr
[u] ta
[u:] ta
[u:] cs
[U] la
[u] zh
[u] th
[u:] th
[u] id
vowel/u# [u-] en
[u:] en_sc
vowel/u_2 [u1] fi
@@ -1563,7 +1494,6 @@ vowel/u_bck [u] base2
[u] fi
[u] fr_ca
[u:] hi
[u:] ta
[u:] hu
[u] nl
[u] pl
@@ -1589,7 +1519,6 @@ vowel/uu_bck [U] en_n
[U] en_wi
[U] fr_ca
[U] hi
[u] ta
[u] hu
[U] pt
[U] no
@@ -1601,6 +1530,7 @@ vowel/V_2 [V] en
[V#] ru
vowel/V_3 [V] en_rp
[V] hi
[a] ta
vowel/V_4 [V] en_sc
[@:] vi
vowel/V_6 [V] en_us
@@ -1682,7 +1612,6 @@ vwl_en_us/3_us [3] en_us
[3:] en_us
vwl_en_us/a [a] en_us
[aa] en_us
vwl_en_us/aai [aI] en_us
vwl_en_us/ai@ [aI@] en_us
vwl_en_us/ar [A:] en_us
[A@] en_us
@@ -1690,11 +1619,10 @@ vwl_en_us/ee [E] en_us
vwl_en_us/er [e@] en_us
vwl_en_us/ii [I] en_us
[I2] en_us
vwl_en_us/ir [i@] en_us
vwl_en_us/ir [i@3] en_us
[i@] en_sc
vwl_en_us/oo [O] en_us
vwl_en_us/oor [O@] en_us
vwl_en_us/or [O:] en_us
[O@] en_us
[o@] en_us
[O:] en_sc
vwl_en_us/ur [U@] en_us
@@ -1816,12 +1744,12 @@ x/d_ [d] base
[d] pl
[d] hr
[d] ru
[r] es
[d;] ro
[d] el
[d] is
[d] sw
x/d_dnt [*2] base
[d[] base
x/d_dnt [d[] base
[d] base2
[d] fi
[d] hi

BIN
phsource/d/tap4 View File


+ 8
- 0
phsource/ph_english View File

@@ -305,6 +305,14 @@ phoneme i@
linkout r-
endphoneme

phoneme i@3
vowel starttype (i) endtype (@)
length 250
formants vdiph2/ii@
linkout r-
endphoneme



phoneme U@
vowel starttype (u) endtype (@)

+ 30
- 60
phsource/ph_english_us View File

@@ -5,41 +5,15 @@
//*******************************************************************


phoneme @ // Schwa
vowel starttype (@) endtype (@)
formants vowel/@_hgh
unstressed
linkout r-
length 130
endphoneme


phoneme 3 // Schwa, used for rhotic schwa in American
vowel starttype (@) endtype (@)
formants vwl_en_us/3_us
// formants vowel/3_2
unstressed
linkout r-
beforevowel @
length 210
endphoneme


phoneme @2 // Schwa, changes to I before a vowel
vowel starttype (@) endtype (@)
formants vowel/@_hgh
unstressed
beforevowel I2
length 120
length 215
endphoneme

phoneme @5 // Schwa, changes to U before a vowel
vowel starttype (@) endtype (@)
formants vowel/@_hgh
unstressed
beforevowelpause U
length 130
endphoneme


phoneme @L
@@ -54,7 +28,6 @@ endphoneme
phoneme a
vowel starttype (a) endtype (@)
length 200
// formants vowel/&_2
formants vwl_en_us/a
reduceto a2 0
endphoneme
@@ -62,8 +35,7 @@ endphoneme

phoneme aa // 'bath' etc.
vowel starttype (a) endtype (@)
length 220
// formants vowel/&_2
length 215
formants vwl_en_us/a
linkout r-
endphoneme
@@ -89,7 +61,7 @@ endphoneme

phoneme I
vowel starttype (i) endtype (i)
length 150
length 155
formants vwl_en_us/ii
linkout ;
endphoneme
@@ -98,7 +70,7 @@ endphoneme
phoneme I2
vowel starttype (i) endtype (i)
unstressed
length 150
length 155
formants vwl_en_us/ii
linkout ;
endphoneme
@@ -106,7 +78,7 @@ endphoneme

phoneme i // optional variant of [I] for end of words
vowel starttype (i) endtype (i)
length 200
length 190
// formants vwl_en_us/i_final3
formants vowel/i#
linkout ;
@@ -115,7 +87,7 @@ endphoneme

phoneme 0
vowel starttype (o) endtype (o)
length 200
length 195
formants vowel/aa_8
reduceto @ 0
endphoneme
@@ -123,8 +95,7 @@ endphoneme

phoneme V
vowel starttype (a) endtype (@)
length 165
// formants vowel/V
length 155
formants vowel/V_6
reduceto @ 0
endphoneme
@@ -139,7 +110,7 @@ endphoneme

phoneme A:
vowel starttype (a) endtype (a)
length 200
length 215
formants vowel/aa_8
before r vwl_en_us/ar
linkout r-
@@ -148,7 +119,7 @@ endphoneme

phoneme A@ // Used for [A:] when followed by 'r', becomes [A:]+[r] in American
vowel starttype (a) endtype (@)
length 240
length 255
formants vwl_en_us/ar
appendph r
endphoneme
@@ -156,7 +127,7 @@ endphoneme

phoneme 3:
vowel starttype (@) endtype (@)
length 220
length 240
formants vwl_en_us/3_us
linkout r-
endphoneme
@@ -172,7 +143,7 @@ endphoneme

phoneme O:
vowel starttype (o) endtype (o)
length 200
length 205
formants vowel/0_3
before r vwl_en_us/or
reduceto @ 0
@@ -181,16 +152,16 @@ endphoneme

phoneme O@
vowel starttype (o) endtype (@)
length 270
// formants vwl_en_us/oor
formants vwl_en_us/or
length 265
formants vwl_en_us/oor
// formants vwl_en_us/or
appendph r
endphoneme


phoneme o@
vowel starttype (o) endtype (@)
length 270
length 265
formants vwl_en_us/or
appendph r
endphoneme
@@ -199,29 +170,29 @@ endphoneme
phoneme O
vowel starttype (o) endtype (o)
length 200
formants vwl_en_us/oo
formants vowel/0_3
reduceto @ 0
endphoneme


phoneme u:
vowel starttype (u) endtype (u)
length 170
length 175
formants vowel/u#_5
// before l/2 vwl_en/u_L-40+l/L2_uL
endphoneme


phoneme aU
vowel starttype (a) endtype (u)
length 210
formants vdiph/au_2
vowel starttype (a) endtype (o)
length 235
formants vdiph/aoo
endphoneme


phoneme oU
vowel starttype (@) endtype (u)
length 240
length 235
formants vdiph/8u
endphoneme

@@ -229,7 +200,7 @@ endphoneme
phoneme aI
vowel starttype (a) endtype (i)
length 235
formants vwl_en_us/aai
formants vdiph/aae
endphoneme


@@ -237,28 +208,27 @@ phoneme eI
vowel starttype (e) endtype (i)
length 220
formants vdiph2/ei_4
// formants vwl_en_us/ei
endphoneme


phoneme OI
vowel starttype (o) endtype (i)
length 300
formants vdiph/ooi_3
length 290
formants vdiph/ooi_4
endphoneme


phoneme e@
vowel starttype (e) endtype (@)
length 280
length 275
formants vwl_en_us/er
appendph r
endphoneme


phoneme i@
phoneme i@3
vowel starttype (i) endtype (@)
length 230
length 255
formants vwl_en_us/ir
appendph r
endphoneme
@@ -266,7 +236,7 @@ endphoneme

phoneme U@
vowel starttype (@) endtype (@)
length 230
length 235
formants vwl_en_us/ur
linkout r-
endphoneme
@@ -274,7 +244,7 @@ endphoneme

phoneme aI@
vowel starttype (a) endtype (@)
length 270
length 265
formants vwl_en_us/ai@
linkout r-
endphoneme
@@ -282,7 +252,7 @@ endphoneme

phoneme aU@
vowel starttype (a) endtype (@)
length 270
length 260
formants vwl_en/aU@
linkout r-
endphoneme

+ 1
- 1
phsource/ph_slovak View File

@@ -137,7 +137,7 @@ phoneme R^/ // Czech r-caron (weaker, for after p,f,t,k)
vcd pla frc sibilant
vowelin f1=0 f2=1700 -300 300 f3=-300 80
vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk
formants voc/zh_2+r3/rz_cs%30
formants voc/zh_2+r3/rz_cs%25
lengthmod 6
endphoneme


+ 7
- 21
phsource/ph_spanish View File

@@ -56,29 +56,15 @@ phoneme s
endphoneme


phoneme v // TEST
vcd lbd frc
vowelin f1=0 f2=1000 -300 -200 f3=-300 100
vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
lengthmod 6
formants voc/v2+vocw/v // shorter
endphoneme

phoneme J2 // TEST palatal fricative (Kirshenbaum C<vcd>)
vcd pal frc palatal
vowelin f1=2 f2=2700 400 600 f3=200 70
vowelout f1=2 f2=2700 400 600 f3=200 70 len=100
lengthmod 6
formants voc/j2+ufric/ch%50
phoneme r // TEST flap ??
vcd alv flp
brkafter
vowelout f1=3 f2=1500 -400 300 f3=-100 80 rms=35 len=50
vowelin f1=0 f2=1500 -300 300 f3=-100 80
formants d/tap4+x/d_%30
lengthmod 3
endphoneme

phoneme J3 // TEST palatal fricative (Kirshenbaum C<vcd>)
vcd pal frc palatal
vowelin f1=2 f2=2700 400 600 f3=200 70
vowelout f1=2 f2=2700 400 600 f3=200 70 len=100
lengthmod 6
formants voc/j+ufric/ch%5
endphoneme




+ 4
- 4
phsource/ph_tamil View File

@@ -7,14 +7,14 @@
phoneme a
vowel starttype (@) endtype (@)
length 130
formants vowel/a#_2
formants vowel/V_3
endphoneme


phoneme a:
vowel starttype (a) endtype (a)
length 270
formants vowel/aa
formants vowel/a_5
endphoneme


@@ -64,14 +64,14 @@ endphoneme
phoneme u
vowel starttype (u) endtype (u)
length 130
formants vowel/uu_bck
formants vowel/u
endphoneme


phoneme u:
vowel starttype (u) endtype (u)
length 270
formants vowel/u_bck
formants vowel/u
endphoneme



+ 5
- 17
phsource/phonemes View File

@@ -28,8 +28,9 @@ phonemenumber 21 _^_ // Change language
phonemenumber 22 _X1 // a language specific action
phonemenumber 23 _| // very short pause
phonemenumber 24 _:: // long pause
phonemenumber 25 _;_ // clause pause
phonemenumber 26 t# // reduced version of [t]
phonemenumber 25 t# // reduced version of [t]
phonemenumber 26 '! // stress - emphasized
phonemenumber 27 _;_ // clause pause

// The base phoneme table contains the utility phonemes, the consonants,
// and a schwa. The vowels are defined in the language specific phoneme
@@ -137,7 +138,7 @@ phoneme _;_ // clause pause
pause
formants NULL
starttype _ endtype _
length 150
length 200
lengthmod 1
endphoneme

@@ -674,20 +675,6 @@ phoneme * // flap
lengthmod 3
endphoneme

phoneme *2 // TEST flap
vcd alv flp
vowelout f1=2 f2=1700 -300 200 f3=-300 60 len=15 brk
vowelin f1=2 f2=1700 -300 150 f3=-200 80
formants d/tap2+x/d_dnt%30
after _ NULL
after @ d/x_tap
vowelin f1=1 f2=1700 -300 150 f3=-200 80
before (i) d/tap2+x/d_dnt%30
lengthmod 3
switchvoicing t
endphoneme




phoneme dZ
@@ -790,6 +777,7 @@ phoneme v
vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
lengthmod 6
formants voc/v+vocw/v
before (r) voc/vj+vocw/v
before _ voc/v_+vocw/v
switchvoicing f
endphoneme

BIN
phsource/vdiph/8u View File


BIN
phsource/vdiph/Vu_4 View File


BIN
phsource/vwl_en_us/aai → phsource/vdiph/aae View File


BIN
phsource/vdiph/aoo View File


BIN
phsource/vdiph/ooi_3 View File


BIN
phsource/vdiph/ooi_4 View File


BIN
phsource/vdiph/vowelchart.png View File


BIN
phsource/vdiph2/ei_4 View File


BIN
phsource/vdiph2/vowelchart.png View File


BIN
phsource/voc/vj View File


BIN
phsource/voc/zh_2 View File


BIN
phsource/vowel/V_6 View File


BIN
phsource/vowel/aa_8 View File


BIN
phsource/vowel/u_bck2 View File


BIN
phsource/vowel/vowelchart.png View File


BIN
phsource/vwl_en_us/3_us View File


BIN
phsource/vwl_en_us/@r_us View File


BIN
phsource/vwl_en_us/V View File


BIN
phsource/vwl_en_us/a View File


BIN
phsource/vwl_en_us/ai@ View File


BIN
phsource/vwl_en_us/ar View File


BIN
phsource/vwl_en_us/ee View File


BIN
phsource/vwl_en_us/ei View File


BIN
phsource/vwl_en_us/er View File


BIN
phsource/vwl_en_us/ii View File


BIN
phsource/vwl_en_us/ir View File


BIN
phsource/vwl_en_us/oo View File


BIN
phsource/vwl_en_us/oor View File


BIN
phsource/vwl_en_us/or View File


+ 14
- 12
src/event.cpp View File

@@ -193,11 +193,11 @@ static espeak_EVENT* event_copy (espeak_EVENT* event)
static void event_notify(espeak_EVENT* event)
{
ENTER("event_notify");

static unsigned int a_old_uid = 0;

espeak_EVENT events[2];
memcpy(&events[0],event,sizeof(espeak_EVENT)); // the event parameter in the callback function should be an array of eventd
memcpy(&events[1],event,sizeof(espeak_EVENT));
events[1].type = espeakEVENT_LIST_TERMINATED; // ... terminated by an event type=0

if (event && my_callback)
@@ -207,31 +207,33 @@ ENTER("event_notify");
switch(event->type)
{
case espeakEVENT_SENTENCE:
my_callback(NULL, 0, event);
my_callback(NULL, 0, events);
a_old_uid = event->unique_identifier;
break;

case espeakEVENT_MSG_TERMINATED:
case espeakEVENT_MARK:
case espeakEVENT_WORD:
case espeakEVENT_MSG_TERMINATED:
case espeakEVENT_END:
case espeakEVENT_PHONEME:
{
// jonsd - I'm not sure what this is for. gilles says it's for when Gnome Speech reads a file of blank lines
if (a_old_uid != event->unique_identifier)
{
espeak_EVENT_TYPE a_new_type = event->type;
event->type = espeakEVENT_SENTENCE;
my_callback(NULL, 0, event);
event->type = a_new_type;
espeak_EVENT_TYPE a_new_type = events[0].type;
events[0].type = espeakEVENT_SENTENCE;
my_callback(NULL, 0, events);
events[0].type = a_new_type;
usleep(50000);
}
my_callback(NULL, 0, event);
my_callback(NULL, 0, events);
a_old_uid = event->unique_identifier;
}
break;

default:
case espeakEVENT_LIST_TERMINATED:
case espeakEVENT_MARK:
case espeakEVENT_PLAY:
case espeakEVENT_END:
case espeakEVENT_LIST_TERMINATED:
case espeakEVENT_PLAY:
break;
}
}

+ 16
- 73
src/extras.cpp View File

@@ -80,6 +80,8 @@ void CloseWaveFile3(FILE *f)
unsigned int pos;
static int value;

if(f == NULL)
return;

fflush(f);
pos = ftell(f);
@@ -118,13 +120,13 @@ int TestUriCallback(int type, const char *uri, const char *base)
int TestSynthCallback(short *wav, int numsamples, espeak_EVENT *events)
{//====================================================================
int type;
f_events = fopen("/home/jsd1/speechdata/text/events","a");

fprintf(f_events,"--\n");
if(f_wavtest == NULL) return(0);

while((type = events->type) != 0)
{
fprintf(f_events,"%5d %4d (%2d) %d ",events->audio_position,events->text_position,events->length,type);
fprintf(f_events,"%2d (%4d %4d) %5d %5d (%3d) ",type,events->unique_identifier,(int)events->user_data,events->audio_position,events->text_position,events->length);
if((type==3) || (type==4))
fprintf(f_events,"'%s'\n",events->id.name);
else
@@ -136,15 +138,15 @@ int TestSynthCallback(short *wav, int numsamples, espeak_EVENT *events)
events++;
}

if(wav == NULL)
if((wav == NULL) && (f_wavtest != NULL))
{
fprintf(f_events,"Finished\n");
CloseWaveFile3(f_wavtest);
f_wavtest = NULL;
fclose(f_events);
return(0);
}
fclose(f_events);

if(f_wavtest == NULL) return(0);
fwrite(wav,numsamples*2,1,f_wavtest);
return(0);
}
@@ -1154,71 +1156,11 @@ void Test2()
fclose(f_out);
}

void Test3()
{
espeak_VOICE voicespec;
espeak_VOICE *newvoice;
int x;

espeak_Initialize(AUDIO_OUTPUT_SYNCHRONOUS,100,NULL,0);
memset(&voicespec,0,sizeof(voicespec));
voicespec.languages = "de";
voicespec.gender = 2;

espeak_SetVoiceByProperties(&voicespec);
newvoice = espeak_GetCurrentVoice();
x = 1;
}
#endif

#define OUTPUT_MODE AUDIO_OUTPUT_PLAYBACK
#define TEXT "Hello world."
#define TEXT_SSML ("<speak>" TEXT "</speak>")
static void
speak(const char *text)
{
int result;
result = espeak_Synth(text, strlen(text) + 1, 0, POS_CHARACTER, 0, espeakSSML, NULL, NULL);
assert(result == EE_OK);
}


int test4() {
espeak_ERROR result;
int sample_rate;
sample_rate = espeak_Initialize(OUTPUT_MODE, 2000, NULL, 0);
assert(sample_rate != EE_INTERNAL_ERROR);
espeak_SetSynthCallback(synth_callback);

espeak_VOICE voice;
memset(&voice, 0, sizeof(espeak_VOICE));
// voice.name = "default";
// voice.languages = "en";
voice.gender = 2;
// voice.age = 4;

result = espeak_SetVoiceByProperties(&voice);
assert(result == EE_OK);
speak(TEXT_SSML);
speak(TEXT_SSML);
espeak_Synchronize();

#ifdef deleted
/* Now the same ting without ssml tags. */
result = espeak_SetVoiceByProperties(&voice);
assert(result == EE_OK);
speak(TEXT);
speak(TEXT);
espeak_Synchronize();
#endif
result = espeak_Terminate();
assert(result == EE_OK);

return 0;
}


const char* text1 = "Hello World2. <audio src=\"here\"> Some text</audio> This is the second sentence";
const char* text1 = "Hello, World2 <mark name=\"mark2\"/>. This is the second sentence";

void TestTest(int control)
{//=======================
@@ -1227,10 +1169,9 @@ void TestTest(int control)
unsigned int ix=0;
char textbuf[2000];
espeak_VOICE voice;
unsigned int unique_identifier=0;
static unsigned int unique_identifier= 123;
static int user_data = 456;

//FindPhonemesUsed();
//return;
//CharsetToUnicode("ISO-8859-4");
//CharsetToUnicode("ISCII");

@@ -1243,7 +1184,7 @@ if(control==2)
}
memset(&voice,0,sizeof(voice));

f = fopen("/home/jsd1/speechdata/text/test","r");
f = fopen("/home/jsd1/speechdata/text/test.txt","r");
if(f==NULL)
return;
@@ -1259,13 +1200,15 @@ if(control==2)

f_wavtest = OpenWaveFile3("/home/jsd1/speechdata/text/test.wav");
f_events = fopen("/home/jsd1/speechdata/text/events","w");
fprintf(f_events,"Audio Text Length Type Id\n");
fprintf(f_events,"Type Audio Text Length Id\n");
fclose(f_events);

espeak_Initialize(AUDIO_OUTPUT_RETRIEVAL,1000,NULL,1);
espeak_Initialize(AUDIO_OUTPUT_PLAYBACK,1000,NULL,0);
espeak_SetSynthCallback(TestSynthCallback);
espeak_SetUriCallback(TestUriCallback);

espeak_Synth(text1, strlen(text1)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, NULL);
espeak_Synth(text1, strlen(text1)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)user_data);
espeak_Synth(text1, strlen(text1)+1, 0, POS_CHARACTER, 0, espeakSSML|espeakCHARS_UTF8, &unique_identifier, (void *)(user_data+1));

espeak_SetParameter(espeakPUNCTUATION, 1, 0);
espeak_Synchronize();

+ 28
- 7
src/intonation.cpp View File

@@ -35,10 +35,15 @@
provide a more flexible intonation system.
*/

// bits in SYLLABLE.flags
#define SYL_RISE 1
#define SYL_EMPHASIS 2
#define SYL_END_CLAUSE 4

typedef struct {
char stress;
char env;
char flags; //bit 0=pitch rising, bit1=emnphasized
char flags; //bit 0=pitch rising, bit1=emnphasized, bit2=end of clause
char nextph_type;
short pitch1;
short pitch2;
@@ -286,7 +291,7 @@ static TONE_TABLE tone_table[N_TONE_TABLE] = {
20, 25, 34, 20, drops_0, 3, 3, 5, oflow, NULL, 15, 28, 0},

{PITCHfall, 41, 4, PITCHfall, 41, 27, // 3 exclamation
20, 25, 34, 24, drops_0, 3, 4, 5, oflow_emf, back_emf, 16, 4, 0},
20, 25, 36, 22, drops_0, 3, 4, 5, oflow_emf, back_emf, 16, 4, 0},

{PITCHfall, 38, 2, PITCHfall, 42, 30, // 4 statement, emphatic
20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 15, 5, 0},
@@ -456,7 +461,7 @@ static void set_pitch(SYLLABLE *syl, int base, int drop)

if(drop < 0)
{
flags = 1;
flags = SYL_RISE;
drop = -drop;
}

@@ -892,8 +897,10 @@ void Translator::CalcPitches(int clause_type)
int option;
int group_tone;
int group_tone_emph;
int group_tone_comma;
int ph_start=0;
int st_start;
int st_clause_end;
int count;
int n_primary;
int count_primary;
@@ -917,6 +924,11 @@ void Translator::CalcPitches(int clause_type)
if(p->tone >= 4)
n_primary++;
}
else
if((p->ph->code == phonPAUSE_CLAUSE) && (n_st > 0))
{
syllable_tab[n_st-1].flags |= SYL_END_CLAUSE;
}
}
syllable_tab[n_st].stress = 0; // extra 0 entry at the end

@@ -938,6 +950,7 @@ void Translator::CalcPitches(int clause_type)

group_tone = punct_to_tone[option][clause_type];
group_tone_emph = punct_to_tone[option][5]; // emphatic form of statement
group_tone_comma = punct_to_tone[option][1]; // emphatic form of statement

if(clause_type == 4)
no_tonic = 1; /* incomplete clause, used for abbreviations such as Mr. Dr. Mrs. */
@@ -975,7 +988,7 @@ void Translator::CalcPitches(int clause_type)
if(syllable_tab[ix].stress == 6)
{
// emphasize this syllable, but don't end the current tone group
syllable_tab[st_ix].flags = 2;
syllable_tab[st_ix].flags = SYL_EMPHASIS;
syl->stress = 5;
break;
}
@@ -985,7 +998,7 @@ void Translator::CalcPitches(int clause_type)
if(syl->stress == 6)
{
// an emphasized syllable, end the tone group after the next primary stress
syllable_tab[st_ix].flags = 2;
syllable_tab[st_ix].flags = SYL_EMPHASIS;

count = 0;
if((n_primary - count_primary) > 1)
@@ -1011,6 +1024,14 @@ void Translator::CalcPitches(int clause_type)

st_start = ix;
}
if((st_start < st_ix) && (syl->flags & SYL_END_CLAUSE))
{
// end of clause after this syllable, indicated by a phonPAUSE_CLAUSE phoneme
st_clause_end = st_ix+1;
count_pitch_vowels(st_start, st_clause_end, st_clause_end);
calc_pitches(st_start, st_clause_end, group_tone_comma);
st_start = st_clause_end;
}
}

if(st_start < st_ix)
@@ -1040,7 +1061,7 @@ void Translator::CalcPitches(int clause_type)
p->pitch2 = x;

p->env = PITCHfall;
if(syl->flags & 1)
if(syl->flags & SYL_RISE)
{
p->env = PITCHrise;
}
@@ -1054,7 +1075,7 @@ void Translator::CalcPitches(int clause_type)
if(p->tone > 5)
p->env = syl->env;

if(syl->flags & 2)
if(syl->flags & SYL_EMPHASIS)
{
p->tone |= 8; // emphasized
}

+ 2
- 0
src/phoneme.h View File

@@ -85,6 +85,8 @@
#define phonPAUSE_LONG 24
#define phonT_REDUCED 25
#define phonSTRESS_TONIC 26
#define phonPAUSE_CLAUSE 27

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

// place of articulation

+ 17
- 4
src/readclause.cpp View File

@@ -50,6 +50,7 @@ int ungot_char2 = 0;
char *p_textinput;
wchar_t *p_wchar_input;
int ungot_char;
char *ungot_word = NULL;
int end_of_input;

int ignore_text=0; // set during <sub> ... </sub> to ignore text which has been replaced by an alias
@@ -1741,6 +1742,13 @@ int Translator::ReadClause(FILE *f_in, char *buf, unsigned short *charix, int n_

f_input = f_in; // for GetC etc

if(ungot_word != NULL)
{
strcpy(buf,ungot_word);
ix += strlen(ungot_word);
ungot_word = NULL;
}

if(ungot_char2 != 0)
{
c2 = ungot_char2;
@@ -1936,17 +1944,22 @@ f_input = f_in; // for GetC etc
else
if(iswspace(c1))
{
char *p_word;

if(translator_name == 0x6a626f)
{
// language jbo : lojban
// treat "i" or ".i" as end-of-sentence
if(buf[ix-1] == 'i')
p_word = &buf[ix-1];
if(p_word[0] == 'i')
{
if(iswspace(buf[ix-2]) || ((buf[ix-2] == '.') && iswspace(buf[ix-3])))
if(p_word[-1] == '.')
p_word--;
if(p_word[-1] == ' ')
{
ungot_word = "i ";
UngetC(c2);
buf[ix] = ' ';
buf[ix+1] = 0;
p_word[0] = 0;
return(CLAUSE_PERIOD);
}
}

+ 6
- 0
src/setlengths.cpp View File

@@ -467,7 +467,13 @@ void Translator::CalcLengths()
{
if((p2->type == phVOWEL) && !(p2->ph->phflags & phNONSYLLABIC))
more_syllables++;

if(p2->ph->code == phonPAUSE_CLAUSE)
end_of_clause = 2;
}
if(p2->ph->code == phonPAUSE_CLAUSE)
end_of_clause = 2;

if((p2->newword & 2) && (more_syllables==0))
{
end_of_clause = 2;

+ 2
- 2
src/synthdata.cpp View File

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

const char *version_string = "1.30.15 17.Jan.08";
const int version_phdata = 0x013010;
const char *version_string = "1.31 19.Jan.08";
const int version_phdata = 0x013100;

int option_device_number = -1;


+ 5
- 5
src/tr_languages.cpp View File

@@ -423,8 +423,8 @@ SetLengthMods(tr,3); // all equal

case L_jbo: // Lojban
{
static const short stress_lengths_jbo[8] = {180,180, 220,220, 0,0, 260,280};
static const wchar_t jbo_punct_within_word[] = {'.',',','\'',0x2c8,0}; // allow period and comma within a word, also stress marker
static const short stress_lengths_jbo[8] = {185,170, 200,200, 0,0, 290,300};
static const wchar_t jbo_punct_within_word[] = {'.',',','\'',0x2c8,0}; // allow period and comma within a word, also stress marker (from LOPT_SYLLABLE_CAPS)
tr = new Translator();
SetupTranslator(tr,stress_lengths_jbo,NULL);
tr->langopts.stress_rule = 2;
@@ -572,14 +572,14 @@ SetLengthMods(tr,3); // all equal
tr->langopts.spelling_stress = 1;
tr->langopts.param[LOPT_COMBINE_WORDS] = 4; // combine some prepositions with the following word

tr->langopts.numbers = 0x1c01 + 0x4000;
tr->langopts.numbers = 0x0c01 + 0x4000 + NUM_ROMAN;
tr->langopts.numbers2 = 0x40;
tr->langopts.thousands_sep = 0; //no thousands separator
tr->langopts.decimal_sep = ',';

if(name2 == L('c','s'))
{
tr->langopts.numbers2 = 0x8; // variant numbers before milliards
tr->langopts.numbers2 = 0x48; // variant numbers before milliards
}

SetLetterVowel(tr,'y');
@@ -623,7 +623,7 @@ SetLengthMods(tr,3); // all equal

case L('t','a'):
{
static const short stress_lengths_ta[8] = {190, 190, 210, 210, 0, 0, 230, 250};
static const short stress_lengths_ta[8] = {190, 190, 210, 210, 0, 0, 220, 220};
static const unsigned char stress_amps_ta[8] = {17,14, 20,19, 20,24, 24,22 };

tr = new Translator();

Loading…
Cancel
Save