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





// Prepositions // 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 skrz $u $brk $alt2 // though
skrze $u $pause // through skrze $u $pause // through
pro $u $pause $alt2 // for pro $u $pause $alt2 // for

+ 14
- 16
dictsource/dict_phonemes View File

Dictionary de_dict Dictionary de_dict


3 @ @- a A A: aI aU 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 * : ; b C C2 d D
dZ f g h j k l m dZ f g h j k l m
0 3 3: @ @- @2 @5 @L 0 3 3: @ @- @2 @5 @L
a a2 A: A@ aa aI aI@ aU a a2 A: A@ aa aI aI@ aU
aU@ E e@ eI I I2 i: i@ 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 : ; b C d D dZ f
g h j k l m n N g h j k l m n N
g h j k l l^ m n g h j k l l^ m n
N n^ p Q r R r- s N n^ p Q r R r- s
S s# s; t T tS ts v S s# s; t T tS ts v
w x z Z
w w2 x z Z




Dictionary ro_dict Dictionary ro_dict
i i. i[ iou o o- ou u i i. i[ iou o o- ou u
uai y 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 Dictionary jbo_dict


Dictionary th_dict 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 Dictionary hbs_dict


Dictionary id_dict Dictionary id_dict


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


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

+ 25
- 25
dictsource/en_list View File

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


Aaron e@r@n Aaron e@r@n


(first place) f'3:st_pl,eIs (first place) f'3:st_pl,eIs
?5 (first place) f'IRst_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 (most of) moUst||@v
(such as) sVtS||_a2z $pause (such as) sVtS||_a2z $pause


beside bI2s,aId $strend2 beside bI2s,aId $strend2
between bI2tw,i:n $strend2 between bI2tw,i:n $strend2
together t@g,ED3 $strend2 together t@g,ED3 $strend2
near ,ni@ $strend2
near ,ni@3 $strend2
thence DEns thence DEns




become bI,kVm $strend2 become bI,kVm $strend2
became bI,keIm $strend2 became bI,keIm $strend2


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

+ 39
- 39
dictsource/en_rules View File

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


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

+ 1
- 0
dictsource/es_rules View File

_) i (_ i _) i (_ i
i i i i
i (A J^ i (A J^
C) i (A j
l) i (A %i l) i (A %i
r) i (A %i r) i (A %i



+ 26
- 6
dictsource/fr_list View File

// //




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




xfce iksEfse@ xfce iksEfse@
xy $abbrev xy $abbrev


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



dr dOkt WR $dot $capital dr dOkt WR $dot $capital
prof $dot prof $dot

+ 20
- 28
dictsource/fr_rules View File





.group a .group a


ae (_ e // reggae vitae ae (_ e // reggae vitae
aen A~ // caen (diff Cicero: aA~) aen A~ // caen (diff Cicero: aA~)
ae ae // maestro ae ae // maestro
ay Ej // paye ay Ej // paye
a a // bateau a a // bateau



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



.group c .group c
_) c (_ se // c
c' s // s c' s // s
cch k // bacchanale cch k // bacchanale
cc (Y ks // accéder cc (Y ks // accéder




.group d .group d
_) d (_ de
dd d // addition dd d // addition
_) d' (P2 d _) d' (P2 d
_lan) d (_ d // land _lan) d (_ d // land
r) d (_ // lourd placard r) d (_ // lourd placard
d d // don bled d d // don bled


.group e


_) e (_ @ // e
.group e
e (Ce_ E e (Ce_ E
eau o // bateau cheveaux eau o // bateau cheveaux
j) e (a // Jean Jeanne j) e (a // Jean Jeanne


e @ // menue e @ // menue



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



.group f .group f
_) f (_ Ef
f f f f
f (f f (f
_neu) f (_ans v // liaison: neuf ans _neu) f (_ans v // liaison: neuf ans




.group g .group g
_) g (_ Ze
g g g g


su) gg (Y gZ // suggérer suggestif su) gg (Y gZ // suggérer suggestif
g (_ g // grog gag goulag g (_ g // grog gag goulag
g Z // congé george g Z // congé george



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



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


ie (ment i // remerciement balbutiement ie (ment i // remerciement balbutiement
î i // abîme î i // abîme
în (i in // vînimes în (i in // vînimes



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



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




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



.group l .group l
_) l (_ El
l l // lit l l // lit
ll l // aller ll l // aller
_) l' (P2 l _) l' (P2 l




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




.group n .group n
_) n (_ En
n n // une n n // une
nn n nn n
ng (_ N ng (_ N
A) ng (_ N // parking meeting A) ng (_ N // parking meeting
nn n // panne nn n // panne


.group o
_) o (_ o


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


o (ch o // cochon o (ch o // cochon


o O // sobre notions émotions o O // sobre notions émotions



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



.group p .group p
_) p (_ pe
p p // pas p p // pas
p (p // appliquer p (p // appliquer
ph f // phrase ph f // phrase
se) pt (_ t // sept se) pt (_ t // sept
se) pt (iè t // septième se) pt (iè t // septième



.group q .group q
_) q (_ ky
q k // coq q k // coq
qu k // quatre qu k // quatre
_) que (_ k@ // que _) que (_ k@ // que
_) qu' (P3 k // qu'il _) qu' (P3 k // qu'il
n) q (_ k // cinq cent n) q (_ k // cinq cent



.group r .group r
_) r (_ ER
right _^_EN // copyright right _^_EN // copyright
_su) rr RR // surréaliste _su) rr RR // surréaliste
ou) rr RR // courrai ou) rr RR // courrai
rr R // erreur rr R // erreur
r r // rien r r // rien



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


s (_S1 z2 s (_S1 z2
s (j z s (j z
s (v z s (v z



.group t .group t
_) t (_ te
t t // bataille t t // bataille
V) t (_ t2 // silent at end of verb unless next word starts with a vowel V) t (_ t2 // silent at end of verb unless next word starts with a vowel
t (_ // silent at end of word t (_ // silent at end of word




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


g) u (ï y // ambiguïté g) u (ï y // ambiguïté
g) u (ë y // ambiguë g) u (ë y // ambiguë



.group v .group v
_) v (_ ve
v v v v



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




.group x .group x
_) x (_ iks
x ks x ks
xs ks // lexique lexicaux vox xs ks // lexique lexicaux vox
_e) x (A gz // exagérer exemple _e) x (A gz // exagérer exemple


yn E~ // laryngite yn E~ // laryngite



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

+ 29
- 6
dictsource/jbo_list View File



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

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

// Numbers // Numbers
_0 no _0 no
_1 pa _1 pa
po'e $u+ // of po'e $u+ // of
zo'e $u+ // pronoun 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) // 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

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


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


.group a .group a
a a a a
.group g .group g
g g g g


_) gi ('A_ _;_gi

.group h .group h
h h h h



+ 4
- 0
docs/commands.html View File

<dd> <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> 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> <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> <dt>
<strong>--voices [=&lt;language code&gt;]</strong><br> <strong>--voices [=&lt;language code&gt;]</strong><br>
<dd>Lists the available voices.<br> <dd>Lists the available voices.<br>

+ 2
- 2
docs/index.html View File

</strong></font> </strong></font>
</td> </td>
<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> <a href="http://espeak.sourceforge.net/"><strong>http://espeak.sourceforge.net</strong></a>
<p> <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. 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.


<hr> <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> <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> <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. <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> <hr>

+ 5
- 1
docs/languages.html View File



<head> <head>
<title>eSpeak Speech Synthesizer</title> <title>eSpeak Speech Synthesizer</title>
<meta name="GENERATOR" content="Quanta Plus">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head> </head>
<body> <body>
</dd> </dd>
<p> <p>
<dt> <dt>
<strong>jbo &nbsp;Lojban</strong><br>
<dd>An artificial language.
</dd>
<p>
<dt>
<strong>la &nbsp;Latin</strong><br> <strong>la &nbsp;Latin</strong><br>
<dd>Stress rules are implemented, but it needs text where long vowels are marked with macrons. <dd>Stress rules are implemented, but it needs text where long vowels are marked with macrons.
</dd> </dd>

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

dictrules 3 6 dictrules 3 6
option 12 1 // reduce [t] 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 stressAmp 17 16 20 20 20 22 23 20


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

formant 2 101 100 100
formant 3 101 100 100

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

language es language es
gender male gender male


intonation 3



+ 60
- 132
phsource/compile_report View File

45 phoneme tables
43 phoneme tables
new total 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_n 30 147
en_us 37 147
en_us 34 147
en_sc 39 149 en_sc 39 149
en_rp 34 147 en_rp 34 147
en_wm 30 147 en_wm 30 147
en_wi 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 Data file Used by
b/b [b] base b/b [b] base
[d] sw [d] sw
d/tap [*;] ro d/tap [*;] ro
d/tap1 [*] base d/tap1 [*] base
d/tap2 [*2] base
d/tap3 [*] base d/tap3 [*] base
d/tap4 [r] es
d/tap_i [*;] ro d/tap_i [*;] ro
d/xd [d] base d/xd [d] base
[d[] base [d[] base
[d] sw [d] sw
d/xd_pzd [d;] pl d/xd_pzd [d;] pl
[d;] ru [d;] ru
d/x_tap [*2] base
dzh/dzh [dZ] base dzh/dzh [dZ] base
[dZ;] base [dZ;] base
[dz;] base [dz;] base
dzh/xdz_pzd [J] base dzh/xdz_pzd [J] base
[J2] hi [J2] hi
envelope/p_214 [214] zh envelope/p_214 [214] zh
[5] th
envelope/p_451 [3] th
envelope/p_512 [8] vi envelope/p_512 [8] vi
envelope/p_fall [2] vi envelope/p_fall [2] vi
[7] vi [7] vi
[22] zh [22] zh
[33] zh [33] zh
[53] zh [53] zh
[1] th
[2] th
envelope/p_fallrise [4] vi envelope/p_fallrise [4] vi
envelope/p_level [1] vi envelope/p_level [1] vi
[3] zhy [3] zhy
[2] zhy [2] zhy
[5] zhy [5] zhy
[35] zh [35] zh
[4] th
envelope/vi_5 [5] vi envelope/vi_5 [5] vi
envelope/vi_5amp [5] vi envelope/vi_5amp [5] vi
envelope/vi_6 [6] vi envelope/vi_6 [6] vi
ufric/ch [C] base ufric/ch [C] base
[J^] base [J^] base
[C2] de [C2] de
[J2] es
[J3] es
ufric/ch_sr [h] sr ufric/ch_sr [h] sr
[x] sr [x] sr
ufric/f [f] base ufric/f [f] base
[k] el [k] el
[kh] zh [kh] zh
[k] sw [k] sw
[kh] th
ustop/ki [c] base ustop/ki [c] base
[k] base [k] base
[k] base2 [k] base2
[k] el [k] el
[k] zhy [k] zhy
ustop/k_unasp_ [k] zh ustop/k_unasp_ [k] zh
[k] th
ustop/null [?] base ustop/null [?] base
ustop/p [p] base ustop/p [p] base
[p] fr [p] fr
[ph] hi [ph] hi
[p] zhy [p] zhy
[ph] th
ustop/p_ [p] base ustop/p_ [p] base
[p] fr [p] fr
[ph] hi [ph] hi
[p] la [p] la
[p;] ro [p;] ro
[p] zh [p] zh
[p] th
ustop/p_unasp_ [p] base2 ustop/p_unasp_ [p] base2
[p] fi [p] fi
[p] hi [p] hi
[t] sk [t] sk
[t] el [t] el
[th] zh [th] zh
[th] th
ustop/t_dnt [t] base ustop/t_dnt [t] base
[t[] base [t[] base
[t] base2 [t] base2
[t] sk [t] sk
[t] el [t] el
ustop/tsh_pzd [tS;] zh ustop/tsh_pzd [tS;] zh
[ch] th
ustop/tsh_pzd_unasp [tS;] zh ustop/tsh_pzd_unasp [tS;] zh
[c] th
ustop/tsh_sr.wav [tS] sr ustop/tsh_sr.wav [tS] sr
ustop/ts_pzd [tS;] base ustop/ts_pzd [tS;] base
[ts;] base [ts;] base
[dZ;] sr [dZ;] sr
ustop/ts_unasp [ts] zh ustop/ts_unasp [ts] zh
ustop/t_unasp [t] zh ustop/t_unasp [t] zh
[t] th
vdiph/0i [OI] pt vdiph/0i [OI] pt
[OI] grc [OI] grc
[OI] vi [OI] vi
[O:I] th
vdiph/0i_2 [OI] en_sc vdiph/0i_2 [OI] en_sc
[OI] en_wi [OI] en_wi
[AI] no [AI] no
vdiph2/i@_2 [i@] en_wm vdiph2/i@_2 [i@] en_wm
vdiph2/ie [i@] en_wi vdiph2/ie [i@] en_wi
[ie] fi [ie] fi
[ia] th
[i:a] th
vdiph2/ii@ [i@] en vdiph2/ii@ [i@] en
[i@3] en
vdiph2/ii@_3 [i@] vi vdiph2/ii@_3 [i@] vi
vdiph2/iioo [io] zh vdiph2/iioo [io] zh
vdiph2/iu [iU] base2 vdiph2/iu [iU] base2
[iU] vi [iU] vi
[iu] zhy [iu] zhy
[iU] th
vdiph2/iu_2 [iu] fi vdiph2/iu_2 [iu] fi
vdiph2/iu_3 [iu] af vdiph2/iu_3 [iu] af
vdiph2/iu_4 [Iu] cy vdiph2/iu_4 [Iu] cy
vdiph2/o_oo [o@] en_wi vdiph2/o_oo [o@] en_wi
[o] is [o] is
vdiph2/u-@ [y@] vi vdiph2/u-@ [y@] vi
[y:a] th
vdiph2/u#@ [U@] en_sc vdiph2/u#@ [U@] en_sc
vdiph2/uo [uo] fi vdiph2/uo [uo] fi
vdiph2/uu@ [U@] en vdiph2/uu@ [U@] en
[U@] en_n [U@] en_n
[U@] en_wm [U@] en_wm
[u@] vi [u@] vi
[ua] th
[u:a] th
vdiph2/y#@ [Y@] af vdiph2/y#@ [Y@] af
[y@] zh [y@] zh
vdiph2/yu [yU] nl vdiph2/yu [yU] nl
vdiph2/y-y# [yY] fi vdiph2/y-y# [yY] fi
vdiph/8u [oU] en_us vdiph/8u [oU] en_us
[ou] zh [ou] zh
vdiph/aae [aI] en_us
vdiph/aai [aai] zhy vdiph/aai [aai] zhy
vdiph/aai_2 [AI] af vdiph/aai_2 [AI] af
[AY] cy [AY] cy
[aI] it [aI] it
[aI] pt [aI] pt
[a:I] vi [a:I] vi
[aI] th
[a:I] th
[aI] id
vdiph/ai_2 [aI] cy vdiph/ai_2 [aI] cy
[aY] cy [aY] cy
vdiph/ai_3 [aI] no vdiph/ai_3 [aI] no
[aI2] en_sc [aI2] en_sc
[aI] is [aI] is
vdiph/ai_en2 [aI] en vdiph/ai_en2 [aI] en
vdiph/aoo [aU] en_us
vdiph/au [aU] en vdiph/au [aU] en
[aU] af [aU] af
[a:U] vi [a:U] vi
[aU] th
[a:U] th
vdiph/au# [aU] en_sc 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_3 [aU] en_rp
vdiph/au_4 [aU] base2 vdiph/au_4 [aU] base2
[aU] cy [aU] cy
[aU] sk [aU] sk
[aU] it [aU] it
[aU] is [aU] is
[aU] id
vdiph/ee-e [E:] hi vdiph/ee-e [E:] hi
vdiph/eei [EI] base2 vdiph/eei [EI] base2
[eI] en [eI] en
[EI] vi [EI] vi
vdiph/eei_2 [eI] eo vdiph/eei_2 [eI] eo
[ei] fi [ei] fi
[eI] id
vdiph/eei_3 [eI] en_rp vdiph/eei_3 [eI] en_rp
[eI] sk [eI] sk
vdiph/eeu [EU] pt vdiph/eeu [EU] pt
[EU] grc [EU] grc
[EU] vi [EU] vi
[eu] zhy [eu] zhy
[E:U] th
vdiph/eeu_2 [EU] la vdiph/eeu_2 [EU] la
[EU] pt_pt [EU] pt_pt
vdiph/eeu_3 [aU] en_n vdiph/eeu_3 [aU] en_n
[eU] sk [eU] sk
[eU] pt [eU] pt
[eU] vi [eU] vi
[eU] th
[e:U] th
vdiph/eu_2 [eu] fi vdiph/eu_2 [eu] fi
vdiph/@i [@:I] th
vdiph/&i [&i] fi vdiph/&i [&i] fi
[aI] hi [aI] hi
vdiph/@i_2 [eI] af vdiph/@i_2 [eI] af
[oI] it [oI] it
[OI] la [OI] la
[oI] vi [oI] vi
[o:I] th
vdiph/oi_2 [oI] af vdiph/oi_2 [oI] af
vdiph/ooi [OI] en vdiph/ooi [OI] en
[OI] en_n [OI] en_n
[OI] no [OI] no
[oi] zhy [oi] zhy
vdiph/ooi_2 [OI] af vdiph/ooi_2 [OI] af
vdiph/ooi_3 [OI] en_us
[OI] en_rp
vdiph/ooi_3 [OI] en_rp
[aI] en_wm [aI] en_wm
vdiph/ooi_4 [OI] en_us
vdiph/oou [oU] cs vdiph/oou [oU] cs
[OU] grc [OU] grc
vdiph/ou [ou] fi vdiph/ou [ou] fi
vdiph/@u_2 [oU] en_rp vdiph/@u_2 [oU] en_rp
vdiph/@u_3 [@U] ro vdiph/@u_3 [@U] ro
vdiph/@u_en [oU] en vdiph/@u_en [oU] en
[@U] id
vdiph/ui [uI] base2 vdiph/ui [uI] base2
[uI] en [uI] en
[uI] eo [uI] eo
[ui] fi [ui] fi
[uI] vi [uI] vi
[ui] zhy [ui] zhy
[uI] th
[u:I] th
vdiph/u-i [yI] vi vdiph/u-i [yI] vi
vdiph/ui_2 [uI] af vdiph/ui_2 [uI] af
vdiph/ui_3 [uI] cy vdiph/ui_3 [uI] cy
voc/dh_ [D] base voc/dh_ [D] base
[D] es [D] es
voc/j [J^] base voc/j [J^] base
[J3] es
voc/j2 [J2] es
voc/Q [Q] base voc/Q [Q] base
[Q^] base [Q^] base
voc/Q_ [Q] base voc/Q_ [Q] base
[v2] nl [v2] nl
[v;] ro [v;] ro
[v] is [v] is
voc/v2 [v] es
voc/vj [v] base
vocw/dh [D] base vocw/dh [D] base
[D] es [D] es
vocw/Q [Q] base vocw/Q [Q] base
[v] base [v] base
[v] fr [v] fr
[v] ta [v] ta
[v] es
[v;] ro [v;] ro
vocw/zh [Z] base vocw/zh [Z] base
[Z;] ro [Z;] ro
[@] en_rp [@] en_rp
[V] cy [V] cy
[@4] hi [@4] hi
[@] th
vowel/@- [@-] base vowel/@- [@-] base
[r*] hr [r*] hr
vowel/& [a] en_rp vowel/& [a] en_rp
vowel/0_2 [0] en_n vowel/0_2 [0] en_n
[O] pt_pt [O] pt_pt
[o] sw [o] sw
vowel/0_3 [O:] en_us
vowel/0_3 [O] en_us
[O:] en_us
[O] en_sc [O] en_sc
[0] en_rp [0] en_rp
[A] hu [A] hu
vowel/3_en [3:] en vowel/3_en [3:] en
[e@] en_wm [e@] en_wm
[3:] af [3:] af
[@:] th
vowel/@_4 [@] nl vowel/@_4 [@] nl
[@] no [@] no
vowel/8_2 [U] en_us vowel/8_2 [U] en_us
[a] hr [a] hr
[a] it [a] it
[a] zh [a] zh
[a] th
[a:] th
[a] id
vowel/a# [a/] base2 vowel/a# [a/] base2
[a2] en_sc [a2] en_sc
[a2] en_wi [a2] en_wi
[a] pt_pt [a] pt_pt
[a] ro [a] ro
[a:] vi [a:] vi
vowel/a#_2 [a] ta
[&] hr
vowel/a#_2 [&] hr
[a2] sv [a2] sv
[&] is [&] is
[a/] sw [a/] sw
[a] zhy [a] zhy
vowel/a_4 [a/] el vowel/a_4 [a/] el
[a] vi [a] vi
vowel/a_5 [a/] it
vowel/a_5 [a:] ta
[a/] it
[a] la [a] la
[a] sv [a] sv
[a] sw [a] sw
vowel/aa [a] fi vowel/aa [a] fi
[A] fr_ca [A] fr_ca
[a:] ta
[A] no [A] no
[A:] no [A:] no
[aa] zhy [aa] zhy
[e] pt_pt [e] pt_pt
[e] grc [e] grc
[e] vi [e] vi
[e] th
[e:] th
[e] id
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
vowel/ee_6 [E] en_n vowel/ee_6 [E] en_n
[&] sk [&] sk
[E3] sv [E3] sv
[E] th
[E:] th
vowel/e_mid [E] en_rp vowel/e_mid [E] en_rp
[e] jbo [e] jbo
[E] fr_ca [E] fr_ca
[E] pt_pt [E] pt_pt
[E] no [E] no
[E] is [E] is
[E] id
[E2] id
vowel/e_mid2 [E] af vowel/e_mid2 [E] af
[E] de [E] de
[E2] de [E2] de
vowel/@_fnt [@] en_wi vowel/@_fnt [@] en_wi
[@2] en_wi [@2] en_wi
[@2] hr [@2] hr
vowel/@_hgh [@] en_us
[@2] en_us
[@5] en_us
[@] hr
vowel/@_hgh [@] hr
vowel/i [i] base2 vowel/i [i] base2
[i:] en_n [i:] en_n
[i] en_wm [i] en_wm
[i] zhy [i] zhy
[i] zh [i] zh
[i] sw [i] sw
[i] th
[i:] th
vowel/i# [i] en_us vowel/i# [i] en_us
[i] en_rp [i] en_rp
[y:] cy [y:] cy
[i] hu [i] hu
[I] it [I] it
[i] is [i] is
vowel/i#_4 [y] th
[y:] th
vowel/i_5 [i:] en_sc vowel/i_5 [i:] en_sc
vowel/i#_5 [y] pt_pt vowel/i#_5 [y] pt_pt
[i/] pt_pt [i/] pt_pt
vowel/i_6 [i:] en_us vowel/i_6 [i:] en_us
[i] ta [i] ta
[i] hr [i] hr
[i] id
vowel/i_en [i:] en vowel/i_en [i:] en
[i] vi [i] vi
vowel/i_fnt [i:] en_wi vowel/i_fnt [i:] en_wi
[@2] hi [@2] hi
[@] ro [@] ro
[@2] no [@2] no
[@] id
vowel/o [o] base2 vowel/o [o] base2
[o:] en [o:] en
[oU] en_wi [oU] en_wi
[o:] sv [o:] sv
[o] zh [o] zh
[u] zh [u] zh
[o] th
[o:] th
[o] id
vowel/o- [o-] zh vowel/o- [o-] zh
vowel/o_2 [o:] cy vowel/o_2 [o:] cy
[o:] hi [o:] hi
[O] sv [O] sv
[O] no [O] no
[o] zhy [o] zhy
[O] th
[O:] th
[O] id
vowel/oo_1 [O:] en_n vowel/oo_1 [O:] en_n
[O:] en_rp [O:] en_rp
[O@] en_rp [O@] en_rp
[u:] de [u:] de
[u] eo [u] eo
[U] fr [U] fr
[u] ta
[u:] ta
[u:] cs [u:] cs
[U] la [U] la
[u] zh [u] zh
[u] th
[u:] th
[u] id
vowel/u# [u-] en vowel/u# [u-] en
[u:] en_sc [u:] en_sc
vowel/u_2 [u1] fi vowel/u_2 [u1] fi
[u] fi [u] fi
[u] fr_ca [u] fr_ca
[u:] hi [u:] hi
[u:] ta
[u:] hu [u:] hu
[u] nl [u] nl
[u] pl [u] pl
[U] en_wi [U] en_wi
[U] fr_ca [U] fr_ca
[U] hi [U] hi
[u] ta
[u] hu [u] hu
[U] pt [U] pt
[U] no [U] no
[V#] ru [V#] ru
vowel/V_3 [V] en_rp vowel/V_3 [V] en_rp
[V] hi [V] hi
[a] ta
vowel/V_4 [V] en_sc vowel/V_4 [V] en_sc
[@:] vi [@:] vi
vowel/V_6 [V] en_us vowel/V_6 [V] en_us
[3:] en_us [3:] en_us
vwl_en_us/a [a] en_us vwl_en_us/a [a] en_us
[aa] en_us [aa] en_us
vwl_en_us/aai [aI] en_us
vwl_en_us/ai@ [aI@] en_us vwl_en_us/ai@ [aI@] en_us
vwl_en_us/ar [A:] en_us vwl_en_us/ar [A:] en_us
[A@] en_us [A@] en_us
vwl_en_us/er [e@] en_us vwl_en_us/er [e@] en_us
vwl_en_us/ii [I] en_us vwl_en_us/ii [I] en_us
[I2] en_us [I2] en_us
vwl_en_us/ir [i@] en_us
vwl_en_us/ir [i@3] en_us
[i@] en_sc [i@] en_sc
vwl_en_us/oo [O] en_us
vwl_en_us/oor [O@] en_us
vwl_en_us/or [O:] en_us vwl_en_us/or [O:] en_us
[O@] en_us
[o@] en_us [o@] en_us
[O:] en_sc [O:] en_sc
vwl_en_us/ur [U@] en_us vwl_en_us/ur [U@] en_us
[d] pl [d] pl
[d] hr [d] hr
[d] ru [d] ru
[r] es
[d;] ro [d;] ro
[d] el [d] el
[d] is [d] is
[d] sw [d] sw
x/d_dnt [*2] base
[d[] base
x/d_dnt [d[] base
[d] base2 [d] base2
[d] fi [d] fi
[d] hi [d] hi

BIN
phsource/d/tap4 View File


+ 8
- 0
phsource/ph_english View File

linkout r- linkout r-
endphoneme endphoneme


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




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

+ 30
- 60
phsource/ph_english_us View File

//******************************************************************* //*******************************************************************




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


phoneme 3 // Schwa, used for rhotic schwa in American phoneme 3 // Schwa, used for rhotic schwa in American
vowel starttype (@) endtype (@) vowel starttype (@) endtype (@)
formants vwl_en_us/3_us formants vwl_en_us/3_us
// formants vowel/3_2
unstressed unstressed
linkout r- linkout r-
beforevowel @ 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 endphoneme


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




phoneme @L phoneme @L
phoneme a phoneme a
vowel starttype (a) endtype (@) vowel starttype (a) endtype (@)
length 200 length 200
// formants vowel/&_2
formants vwl_en_us/a formants vwl_en_us/a
reduceto a2 0 reduceto a2 0
endphoneme endphoneme


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


phoneme I phoneme I
vowel starttype (i) endtype (i) vowel starttype (i) endtype (i)
length 150
length 155
formants vwl_en_us/ii formants vwl_en_us/ii
linkout ; linkout ;
endphoneme endphoneme
phoneme I2 phoneme I2
vowel starttype (i) endtype (i) vowel starttype (i) endtype (i)
unstressed unstressed
length 150
length 155
formants vwl_en_us/ii formants vwl_en_us/ii
linkout ; linkout ;
endphoneme endphoneme


phoneme i // optional variant of [I] for end of words phoneme i // optional variant of [I] for end of words
vowel starttype (i) endtype (i) vowel starttype (i) endtype (i)
length 200
length 190
// formants vwl_en_us/i_final3 // formants vwl_en_us/i_final3
formants vowel/i# formants vowel/i#
linkout ; linkout ;


phoneme 0 phoneme 0
vowel starttype (o) endtype (o) vowel starttype (o) endtype (o)
length 200
length 195
formants vowel/aa_8 formants vowel/aa_8
reduceto @ 0 reduceto @ 0
endphoneme endphoneme


phoneme V phoneme V
vowel starttype (a) endtype (@) vowel starttype (a) endtype (@)
length 165
// formants vowel/V
length 155
formants vowel/V_6 formants vowel/V_6
reduceto @ 0 reduceto @ 0
endphoneme endphoneme


phoneme A: phoneme A:
vowel starttype (a) endtype (a) vowel starttype (a) endtype (a)
length 200
length 215
formants vowel/aa_8 formants vowel/aa_8
before r vwl_en_us/ar before r vwl_en_us/ar
linkout r- linkout r-


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


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


phoneme O: phoneme O:
vowel starttype (o) endtype (o) vowel starttype (o) endtype (o)
length 200
length 205
formants vowel/0_3 formants vowel/0_3
before r vwl_en_us/or before r vwl_en_us/or
reduceto @ 0 reduceto @ 0


phoneme O@ phoneme O@
vowel starttype (o) endtype (@) 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 appendph r
endphoneme endphoneme




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




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




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




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


phoneme aI phoneme aI
vowel starttype (a) endtype (i) vowel starttype (a) endtype (i)
length 235 length 235
formants vwl_en_us/aai
formants vdiph/aae
endphoneme endphoneme




vowel starttype (e) endtype (i) vowel starttype (e) endtype (i)
length 220 length 220
formants vdiph2/ei_4 formants vdiph2/ei_4
// formants vwl_en_us/ei
endphoneme endphoneme




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




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




phoneme i@
phoneme i@3
vowel starttype (i) endtype (@) vowel starttype (i) endtype (@)
length 230
length 255
formants vwl_en_us/ir formants vwl_en_us/ir
appendph r appendph r
endphoneme endphoneme


phoneme U@ phoneme U@
vowel starttype (@) endtype (@) vowel starttype (@) endtype (@)
length 230
length 235
formants vwl_en_us/ur formants vwl_en_us/ur
linkout r- linkout r-
endphoneme endphoneme


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


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

+ 1
- 1
phsource/ph_slovak View File

vcd pla frc sibilant vcd pla frc sibilant
vowelin f1=0 f2=1700 -300 300 f3=-300 80 vowelin f1=0 f2=1700 -300 300 f3=-300 80
vowelout f1=2 f2=1700 -300 300 f3=-300 80 brk 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 lengthmod 6
endphoneme endphoneme



+ 7
- 21
phsource/ph_spanish View File

endphoneme 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 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

phoneme a phoneme a
vowel starttype (@) endtype (@) vowel starttype (@) endtype (@)
length 130 length 130
formants vowel/a#_2
formants vowel/V_3
endphoneme endphoneme




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




phoneme u phoneme u
vowel starttype (u) endtype (u) vowel starttype (u) endtype (u)
length 130 length 130
formants vowel/uu_bck
formants vowel/u
endphoneme endphoneme




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





+ 5
- 17
phsource/phonemes View File

phonemenumber 22 _X1 // a language specific action phonemenumber 22 _X1 // a language specific action
phonemenumber 23 _| // very short pause phonemenumber 23 _| // very short pause
phonemenumber 24 _:: // long 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, // The base phoneme table contains the utility phonemes, the consonants,
// and a schwa. The vowels are defined in the language specific phoneme // and a schwa. The vowels are defined in the language specific phoneme
pause pause
formants NULL formants NULL
starttype _ endtype _ starttype _ endtype _
length 150
length 200
lengthmod 1 lengthmod 1
endphoneme endphoneme


lengthmod 3 lengthmod 3
endphoneme 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 phoneme dZ
vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50 vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
lengthmod 6 lengthmod 6
formants voc/v+vocw/v formants voc/v+vocw/v
before (r) voc/vj+vocw/v
before _ voc/v_+vocw/v before _ voc/v_+vocw/v
switchvoicing f switchvoicing f
endphoneme 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

static void event_notify(espeak_EVENT* event) static void event_notify(espeak_EVENT* event)
{ {
ENTER("event_notify"); ENTER("event_notify");

static unsigned int a_old_uid = 0; static unsigned int a_old_uid = 0;


espeak_EVENT events[2]; 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[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 events[1].type = espeakEVENT_LIST_TERMINATED; // ... terminated by an event type=0


if (event && my_callback) if (event && my_callback)
switch(event->type) switch(event->type)
{ {
case espeakEVENT_SENTENCE: case espeakEVENT_SENTENCE:
my_callback(NULL, 0, event);
my_callback(NULL, 0, events);
a_old_uid = event->unique_identifier; a_old_uid = event->unique_identifier;
break; break;


case espeakEVENT_MSG_TERMINATED:
case espeakEVENT_MARK:
case espeakEVENT_WORD: 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) 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); usleep(50000);
} }
my_callback(NULL, 0, event);
my_callback(NULL, 0, events);
a_old_uid = event->unique_identifier; a_old_uid = event->unique_identifier;
} }
break; break;


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

+ 16
- 73
src/extras.cpp View File

unsigned int pos; unsigned int pos;
static int value; static int value;


if(f == NULL)
return;


fflush(f); fflush(f);
pos = ftell(f); pos = ftell(f);
int TestSynthCallback(short *wav, int numsamples, espeak_EVENT *events) int TestSynthCallback(short *wav, int numsamples, espeak_EVENT *events)
{//==================================================================== {//====================================================================
int type; int type;
f_events = fopen("/home/jsd1/speechdata/text/events","a");


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


while((type = events->type) != 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)) if((type==3) || (type==4))
fprintf(f_events,"'%s'\n",events->id.name); fprintf(f_events,"'%s'\n",events->id.name);
else else
events++; events++;
} }


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


if(f_wavtest == NULL) return(0);
fwrite(wav,numsamples*2,1,f_wavtest); fwrite(wav,numsamples*2,1,f_wavtest);
return(0); return(0);
} }
fclose(f_out); 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 #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) void TestTest(int control)
{//======================= {//=======================
unsigned int ix=0; unsigned int ix=0;
char textbuf[2000]; char textbuf[2000];
espeak_VOICE voice; 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("ISO-8859-4");
//CharsetToUnicode("ISCII"); //CharsetToUnicode("ISCII");


} }
memset(&voice,0,sizeof(voice)); 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) if(f==NULL)
return; return;


f_wavtest = OpenWaveFile3("/home/jsd1/speechdata/text/test.wav"); f_wavtest = OpenWaveFile3("/home/jsd1/speechdata/text/test.wav");
f_events = fopen("/home/jsd1/speechdata/text/events","w"); 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_SetSynthCallback(TestSynthCallback);
espeak_SetUriCallback(TestUriCallback); 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_SetParameter(espeakPUNCTUATION, 1, 0);
espeak_Synchronize(); espeak_Synchronize();

+ 28
- 7
src/intonation.cpp View File

provide a more flexible intonation system. 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 { typedef struct {
char stress; char stress;
char env; 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; char nextph_type;
short pitch1; short pitch1;
short pitch2; short pitch2;
20, 25, 34, 20, drops_0, 3, 3, 5, oflow, NULL, 15, 28, 0}, 20, 25, 34, 20, drops_0, 3, 3, 5, oflow, NULL, 15, 28, 0},


{PITCHfall, 41, 4, PITCHfall, 41, 27, // 3 exclamation {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 {PITCHfall, 38, 2, PITCHfall, 42, 30, // 4 statement, emphatic
20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 15, 5, 0}, 20, 25, 34, 22, drops_0, 3, 3, 5, oflow, NULL, 15, 5, 0},


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


int option; int option;
int group_tone; int group_tone;
int group_tone_emph; int group_tone_emph;
int group_tone_comma;
int ph_start=0; int ph_start=0;
int st_start; int st_start;
int st_clause_end;
int count; int count;
int n_primary; int n_primary;
int count_primary; int count_primary;
if(p->tone >= 4) if(p->tone >= 4)
n_primary++; 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 syllable_tab[n_st].stress = 0; // extra 0 entry at the end




group_tone = punct_to_tone[option][clause_type]; group_tone = punct_to_tone[option][clause_type];
group_tone_emph = punct_to_tone[option][5]; // emphatic form of statement 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) if(clause_type == 4)
no_tonic = 1; /* incomplete clause, used for abbreviations such as Mr. Dr. Mrs. */ no_tonic = 1; /* incomplete clause, used for abbreviations such as Mr. Dr. Mrs. */
if(syllable_tab[ix].stress == 6) if(syllable_tab[ix].stress == 6)
{ {
// emphasize this syllable, but don't end the current tone group // 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; syl->stress = 5;
break; break;
} }
if(syl->stress == 6) if(syl->stress == 6)
{ {
// an emphasized syllable, end the tone group after the next primary stress // 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; count = 0;
if((n_primary - count_primary) > 1) if((n_primary - count_primary) > 1)


st_start = ix; 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) if(st_start < st_ix)
p->pitch2 = x; p->pitch2 = x;


p->env = PITCHfall; p->env = PITCHfall;
if(syl->flags & 1)
if(syl->flags & SYL_RISE)
{ {
p->env = PITCHrise; p->env = PITCHrise;
} }
if(p->tone > 5) if(p->tone > 5)
p->env = syl->env; p->env = syl->env;


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

+ 2
- 0
src/phoneme.h View File

#define phonPAUSE_LONG 24 #define phonPAUSE_LONG 24
#define phonT_REDUCED 25 #define phonT_REDUCED 25
#define phonSTRESS_TONIC 26 #define phonSTRESS_TONIC 26
#define phonPAUSE_CLAUSE 27

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


// place of articulation // place of articulation

+ 17
- 4
src/readclause.cpp View File

char *p_textinput; char *p_textinput;
wchar_t *p_wchar_input; wchar_t *p_wchar_input;
int ungot_char; int ungot_char;
char *ungot_word = NULL;
int end_of_input; int end_of_input;


int ignore_text=0; // set during <sub> ... </sub> to ignore text which has been replaced by an alias int ignore_text=0; // set during <sub> ... </sub> to ignore text which has been replaced by an alias


f_input = f_in; // for GetC etc 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) if(ungot_char2 != 0)
{ {
c2 = ungot_char2; c2 = ungot_char2;
else else
if(iswspace(c1)) if(iswspace(c1))
{ {
char *p_word;

if(translator_name == 0x6a626f) if(translator_name == 0x6a626f)
{ {
// language jbo : lojban // language jbo : lojban
// treat "i" or ".i" as end-of-sentence // 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); UngetC(c2);
buf[ix] = ' ';
buf[ix+1] = 0;
p_word[0] = 0;
return(CLAUSE_PERIOD); return(CLAUSE_PERIOD);
} }
} }

+ 6
- 0
src/setlengths.cpp View File

{ {
if((p2->type == phVOWEL) && !(p2->ph->phflags & phNONSYLLABIC)) if((p2->type == phVOWEL) && !(p2->ph->phflags & phNONSYLLABIC))
more_syllables++; 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)) if((p2->newword & 2) && (more_syllables==0))
{ {
end_of_clause = 2; end_of_clause = 2;

+ 2
- 2
src/synthdata.cpp View File

#include "translate.h" #include "translate.h"
#include "wave.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; int option_device_number = -1;



+ 5
- 5
src/tr_languages.cpp View File



case L_jbo: // Lojban 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(); tr = new Translator();
SetupTranslator(tr,stress_lengths_jbo,NULL); SetupTranslator(tr,stress_lengths_jbo,NULL);
tr->langopts.stress_rule = 2; tr->langopts.stress_rule = 2;
tr->langopts.spelling_stress = 1; tr->langopts.spelling_stress = 1;
tr->langopts.param[LOPT_COMBINE_WORDS] = 4; // combine some prepositions with the following word 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.numbers2 = 0x40;
tr->langopts.thousands_sep = 0; //no thousands separator tr->langopts.thousands_sep = 0; //no thousands separator
tr->langopts.decimal_sep = ','; tr->langopts.decimal_sep = ',';


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


SetLetterVowel(tr,'y'); SetLetterVowel(tr,'y');


case L('t','a'): 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 }; static const unsigned char stress_amps_ta[8] = {17,14, 20,19, 20,24, 24,22 };


tr = new Translator(); tr = new Translator();

Loading…
Cancel
Save