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-fd96e6ae7743master
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -70,6 +70,7 @@ | |||
_) i (_ i | |||
i i | |||
i (A J^ | |||
C) i (A j | |||
l) i (A %i | |||
r) i (A %i | |||
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 | |||
@@ -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 <characters> are given, then only those listed punctuation characters are spoken, eg. <code> --punct=".,;?"</code> | |||
<p> | |||
<dt><strong>--split [="<minutes>"]</strong><br> | |||
<dd> | |||
Used with <strong>-w</strong>, it starts a new WAV file every <code><minutes></code> minutes, at the next sentence boundary. | |||
<p> | |||
<dt> | |||
<strong>--voices [=<language code>]</strong><br> | |||
<dd>Lists the available voices.<br> |
@@ -37,7 +37,7 @@ | |||
</strong></font> | |||
</td> | |||
<td> | |||
eSpeak is a compact open source software speech synthesizer for English and other languages. | |||
eSpeak is a compact open source software speech synthesizer for English and other languages, for Linux and Windows. | |||
<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> |
@@ -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 Lojban</strong><br> | |||
<dd>An artificial language. | |||
</dd> | |||
<p> | |||
<dt> | |||
<strong>la Latin</strong><br> | |||
<dd>Stress rules are implemented, but it needs text where long vowels are marked with macrons. | |||
</dd> |
@@ -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 |
@@ -2,4 +2,5 @@ name spanish | |||
language es | |||
gender male | |||
intonation 3 | |||
@@ -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 |
@@ -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 (@) |
@@ -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 |
@@ -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 | |||
@@ -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 | |||
@@ -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 | |||
@@ -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 |
@@ -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; | |||
} | |||
} |
@@ -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(); |
@@ -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 | |||
} |
@@ -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 |
@@ -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); | |||
} | |||
} |
@@ -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; |
@@ -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; | |||
@@ -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(); |