git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@127 d46cf337-b52f-0410-862d-fd96e6ae7743master
@@ -340,8 +340,8 @@ Dictionary zh_dict | |||
i i. i[ iou o o- ou u | |||
uai y | |||
: f j k kh l m n | |||
N p ph R R2 R3 s s. | |||
: 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. | |||
@@ -370,7 +370,6 @@ Dictionary hbs_dict | |||
& @ @2 a A a: aI aU | |||
E e e: i I i: l- O | |||
o o: oU r* r- u U u: | |||
y | |||
* b d dZ dZ; f g h | |||
j k l L l^ m n N |
@@ -298,6 +298,7 @@ _. punto | |||
// pronunciation exceptions | |||
linux $1 | |||
méxico mExiko | |||
mexicano mExikano | |||
@@ -69,7 +69,7 @@ | |||
.group i | |||
_) i (_ i | |||
i i | |||
i (A j | |||
i (A J^ | |||
l) i (A %i | |||
r) i (A %i | |||
@@ -109,7 +109,7 @@ | |||
.group o | |||
_) o (_ o | |||
o o | |||
oy oI | |||
oy (K oI | |||
oy (_ 'oI | |||
@@ -170,8 +170,8 @@ | |||
.group x | |||
_) x (_ Ekis | |||
x ks | |||
A) x (A ks | |||
x (_ =ks | |||
A) x (A Qs | |||
x (_ =Qs | |||
.group y | |||
@@ -181,7 +181,7 @@ | |||
_m) y J | |||
_n) y J | |||
_l) y J | |||
y (A j | |||
y (A J^ | |||
.group z |
@@ -25,9 +25,9 @@ _à a:aksA~gRav | |||
ñ Entilde | |||
ô o:aksA~siRkO~flEks | |||
ö o:tRema | |||
ù u:aksA~gRav | |||
û u:aksA~siRkO~flEks | |||
ü u:tRema | |||
ù y:aksA~gRav | |||
û y:aksA~siRkO~flEks | |||
ü y:tRema | |||
_y i:gR'Ek | |||
@@ -293,7 +293,7 @@ durant $brk | |||
ne $u $verbf | |||
// questions | |||
où $pause | |||
où $brk | |||
// auxillary verbs (be, have, can, etc) | |||
suis $u+ $verb | |||
@@ -415,7 +415,6 @@ t'y ti | |||
(nord est) nOREst | |||
écho Eko | |||
cci $abbrev | |||
espeak ispik | |||
nvda $abbrev | |||
open Op'En | |||
outlook autluk | |||
@@ -452,6 +451,7 @@ fret fR'Et | |||
gadget gadZEt | |||
hamlet amlEt | |||
internet E~tERnEt | |||
(internet explorer) E~tErn'Et||EksplOr'Wr | |||
jacket ZakEt | |||
knesset knEsEt | |||
lazaret lazaREt | |||
@@ -528,6 +528,13 @@ viavoice viavOjs | |||
windows windoz | |||
word wORd | |||
wright _^_EN | |||
update @pd'ejt | |||
skype sk'ajp@- | |||
bluetooth blut'us | |||
messenger mEsE~nZ'Wr | |||
player plEj'Wr | |||
movy muv'i | |||
maker mEjk'Wr | |||
yacht jot | |||
@@ -602,3 +609,4 @@ vincent vE~sA~ | |||
@@ -39,6 +39,8 @@ | |||
aoû u // août | |||
au (l_ O // Paul | |||
au o // autruche | |||
aud (_ o // chaud | |||
au o // autruche | |||
p) ay (s Ei // pays paysage | |||
ay (C E // aymé | |||
ay Ej // paye | |||
@@ -174,7 +176,7 @@ | |||
lum) en (t_ A~ | |||
rum) en (t_ A~ // prudemment | |||
_cli) en (t_ A~ // client | |||
_cli) en (t A~ // client | |||
_laur) en (t_ A~ | |||
_mécont) en (t_ A~ | |||
_cont) en (t_ A~ | |||
@@ -217,7 +219,6 @@ | |||
w) er (s_ WR | |||
er (_ e // parler léger | |||
er (_A eR // parler léger | |||
er (s_ e | |||
i) ert (_t2 e // requiert | |||
@@ -477,6 +478,7 @@ | |||
_) ok (_ oke // OK | |||
o (mm O // comme | |||
dr) o (me_ o // vélodrome | |||
ph) o (ne_ O // téléphone | |||
om (b O~ // bombe | |||
om (p O~ // pompe | |||
n) om (_ O~ // nom | |||
@@ -486,10 +488,10 @@ | |||
onsh (A O~z // bonshommes | |||
onh (A On // bonhomme | |||
b) on (_A On // liaison: bon élève | |||
m) on (_A O~n // mon appui | |||
s) on (_A O~n | |||
t) on (_A O~n | |||
_b) on (_A On // liaison: bon élève | |||
_m) on (_A O~n // mon appui | |||
_s) on (_A O~n | |||
_t) on (_A O~n | |||
z) o (ne_ o // amazone | |||
c) o (ne_ o | |||
@@ -561,7 +563,8 @@ | |||
_) q (_ ky | |||
q k // coq | |||
qu k // quatre | |||
que (_ k@ // puisque | |||
_) que (_ k@ // que | |||
que (_ k@- // puisque banque... | |||
_) qu' (P3 k // qu'il | |||
n) q (_ k // cinq cent | |||
@@ -570,7 +573,7 @@ | |||
right _^_EN // copyright | |||
_su) rr RR // surréaliste | |||
ou) rr RR // courrai | |||
rre (_ R // barre | |||
rre (_ R@- // barre | |||
rr R // erreur | |||
r r // rien | |||
@@ -627,10 +630,12 @@ | |||
.group t | |||
_) t (_ te | |||
t t // bataille | |||
t (_ t2 // silent at end of word 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 | |||
ts (_S1 z2 // silent at end of word unless next word starts with a vowel | |||
C) t (_ t // compost watt soft script malttact abrupt | |||
n) t (_ t2 // emprunt | |||
Vn) t (_ t2 // silent at end of verb unless next word starts with a vowel | |||
n) t (_ // silent at end of word | |||
r) t (_ t2 // fort | |||
aul) t (_ // Renault | |||
@@ -796,3 +801,4 @@ | |||
© _^_EN | |||
® R@ZistR'@d_m'aRk | |||
@@ -43,31 +43,10 @@ w v@bu | |||
// unstressed words. Note single-syllable cmavo are all unstressed in jbo_rules | |||
e'o $u+ // request | |||
xu $u+ // question | |||
pu $u+ // past | |||
ko $u+ | |||
ku $u+ | |||
cu $u+ | |||
se $u+ | |||
te $u+ | |||
la $u+ // article | |||
le $u+ | |||
li $u+ | |||
lo $u+ | |||
pe $u+ // of | |||
po $u+ | |||
po'e $u+ | |||
fa $u+ | |||
fe $u+ | |||
fi $u+ | |||
fo $u+ | |||
fu $u+ | |||
po'e $u+ // of | |||
zo'e $u+ // pronoun | |||
i $u+ $pause | |||
@@ -77,11 +56,4 @@ ku ku_: | |||
boi bOI_: | |||
vau vaU_: | |||
kei keI_: | |||
// pronouns | |||
mi $u+ | |||
do $u+ | |||
ti $u+ | |||
ta $u+ | |||
tu $u+ | |||
zo'e $u+ | |||
toi tOI_: |
@@ -7,6 +7,9 @@ | |||
a a | |||
ai aI | |||
au aU | |||
X) a (_ %a // single-syllable cmavo are unstressed | |||
X) ai (_ %aI | |||
X) au (_ %aU | |||
.group b | |||
b b | |||
@@ -21,6 +24,8 @@ | |||
.group e | |||
e e | |||
ei eI | |||
X) e (_ %e | |||
X) ei (_ %eI | |||
.group f | |||
f f | |||
@@ -34,6 +39,8 @@ | |||
.group i | |||
i i | |||
i (A j | |||
X) i (_ %i | |||
X) i (A_ %j | |||
.group j | |||
j Z | |||
@@ -57,6 +64,8 @@ | |||
.group o | |||
o o | |||
oi OI | |||
X) o (_ %o | |||
X) oi (_ %OI | |||
.group p | |||
p p | |||
@@ -80,6 +89,8 @@ | |||
.group u | |||
u u | |||
u (A w | |||
X) u (_ %u | |||
X) u (A_ %w | |||
.group v | |||
v v |
@@ -257,5 +257,5 @@ i i: $atend | |||
der dE:r | |||
her hE:r | |||
kom kOm | |||
noe nu:@2 // ?? | |||
loe lu: $capital | |||
system syst'e:m |
@@ -110,13 +110,12 @@ | |||
o (CC O | |||
oi OI | |||
oe Y: // ø | |||
oe (CC W | |||
oey Yy | |||
oe O@2 | |||
@b) oe (_ u: | |||
o (nd U | |||
o (rt U | |||
o (rd u: // ?? or just for "bord" ? | |||
b) o (rd u: | |||
o (st U | |||
.group p | |||
@@ -186,6 +185,7 @@ | |||
.group å | |||
å o: | |||
åe o:@2 | |||
å (CC O | |||
.group æ |
@@ -1,50 +1,50 @@ | |||
45 phoneme tables | |||
new total | |||
base 97 97 | |||
base2 24 116 | |||
en 53 145 | |||
en_n 30 145 | |||
en_us 37 145 | |||
en_sc 39 147 | |||
en_rp 34 145 | |||
en_wm 30 145 | |||
en_wi 30 145 | |||
af 38 129 | |||
cy 29 123 | |||
de 33 124 | |||
eo 13 109 | |||
jbo 4 110 | |||
fi 40 128 | |||
fr 35 120 | |||
fr_ca 11 120 | |||
hi 50 133 | |||
ta 13 135 | |||
hu 23 113 | |||
nl 28 120 | |||
pl 15 108 | |||
sk 29 126 | |||
cs 6 126 | |||
hr 20 131 | |||
mk 3 132 | |||
sr 14 131 | |||
ru 38 127 | |||
it 17 119 | |||
la 21 115 | |||
es 9 118 | |||
pt 27 132 | |||
pt_pt 20 132 | |||
ro 36 140 | |||
el 8 116 | |||
grc 12 121 | |||
sv 25 119 | |||
no 28 123 | |||
is 32 122 | |||
vi 42 135 | |||
zhy 40 130 | |||
zh 61 144 | |||
sw 14 106 | |||
th 50 140 | |||
id 14 118 | |||
base 99 99 | |||
base2 24 118 | |||
en 53 147 | |||
en_n 30 147 | |||
en_us 37 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 | |||
Data file Used by | |||
b/b [b] base | |||
@@ -1144,6 +1144,7 @@ vowel/3_en [3:] en | |||
[3:] af | |||
[@:] th | |||
vowel/@_4 [@] nl | |||
[@] no | |||
vowel/8_2 [U] en_us | |||
[8] sv | |||
vowel/8_3 [eo] zhy | |||
@@ -1335,7 +1336,6 @@ vowel/@_hgh [@] en_us | |||
[@2] en_us | |||
[@5] en_us | |||
[@] hr | |||
[@] no | |||
vowel/i [i] base2 | |||
[i:] en_n | |||
[i] en_wm |
@@ -12,7 +12,7 @@ phoneme @ // close schwa | |||
vowel starttype (@) endtype (@) | |||
unstressed | |||
length 120 | |||
formants vowel/@_hgh | |||
formants vowel/@_4 | |||
endphoneme | |||
phoneme @2 // open schwa | |||
@@ -31,7 +31,7 @@ endphoneme | |||
phoneme i: | |||
vowel starttype (i) endtype (i) | |||
length 220 | |||
length 230 | |||
formants vowel/i | |||
after w w/wi2 | |||
linkout ; | |||
@@ -45,7 +45,7 @@ endphoneme | |||
phoneme y: | |||
vowel starttype (u) endtype (u) | |||
length 250 | |||
length 260 | |||
formants vowel/y_4 | |||
endphoneme | |||
@@ -57,7 +57,7 @@ endphoneme | |||
phoneme Y: | |||
vowel starttype (@) endtype (@) | |||
length 250 | |||
length 260 | |||
formants vwl_no/y# | |||
endphoneme | |||
@@ -71,13 +71,13 @@ endphoneme | |||
phoneme E: | |||
vowel starttype (e) endtype (e) | |||
length 260 | |||
length 270 | |||
formants vowel/ee_1 | |||
endphoneme | |||
phoneme e: | |||
vowel starttype (e) endtype (e) | |||
length 240 | |||
length 250 | |||
formants vowel/e_2 | |||
endphoneme | |||
@@ -114,7 +114,7 @@ endphoneme | |||
phoneme o: | |||
vowel starttype (o) endtype (o) | |||
length 250 | |||
length 270 | |||
formants vowel/o_2 | |||
endphoneme | |||
@@ -126,7 +126,7 @@ endphoneme | |||
phoneme u: | |||
vowel starttype (u) endtype (u) | |||
length 230 | |||
length 240 | |||
formants vowel/u_bck | |||
endphoneme | |||
@@ -139,7 +139,7 @@ endphoneme | |||
phoneme u-: | |||
vowel starttype (u) endtype (u) | |||
length 250 | |||
length 260 | |||
formants vwl_no/u#2 | |||
endphoneme | |||
@@ -28,7 +28,8 @@ phonemenumber 21 _^_ // Change language | |||
phonemenumber 22 _X1 // a language specific action | |||
phonemenumber 23 _| // very short pause | |||
phonemenumber 24 _:: // long pause | |||
phonemenumber 25 t# // reduced version of [t] | |||
phonemenumber 25 _;_ // clause pause | |||
phonemenumber 26 t# // reduced version of [t] | |||
// The base phoneme table contains the utility phonemes, the consonants, | |||
// and a schwa. The vowels are defined in the language specific phoneme | |||
@@ -71,6 +72,11 @@ phoneme ' // Primary stress | |||
endphoneme | |||
phoneme '' // Primary stress (priority) | |||
stress | |||
length 5 | |||
endphoneme | |||
phoneme '! // Primary stress (emphasized) | |||
stress | |||
length 6 | |||
endphoneme | |||
@@ -127,6 +133,14 @@ phoneme _:: // Long pause | |||
lengthmod 1 | |||
endphoneme | |||
phoneme _;_ // clause pause | |||
pause | |||
formants NULL | |||
starttype _ endtype _ | |||
length 150 | |||
lengthmod 1 | |||
endphoneme | |||
phoneme _^_ // Change dictionary (followed by language-code in ascii | |||
pause | |||
starttype _ endtype _ |
@@ -3,7 +3,7 @@ INCDIR=/usr/include/espeak | |||
LIBDIR=/usr/lib | |||
DATADIR=/usr/share/espeak-data | |||
RELEASE = 1.29 | |||
RELEASE = 1.30 | |||
BIN_NAME = speak | |||
BIN2_NAME = espeak | |||
LIB_NAME = libespeak.so | |||
@@ -15,20 +15,6 @@ INSTALL = /usr/bin/install | |||
LN_SF = /bin/ln -sf | |||
MKDIR = mkdir -p | |||
#AUDIO = portaudio | |||
AUDIO = pulseaudio | |||
ifeq ($(AUDIO),pulseaudio) | |||
WAVE=wave_pulse.cpp | |||
LIB_AUDIO=pulse | |||
USE_AUDIO=USE_PULSEAUDIO | |||
else | |||
#portaudio | |||
WAVE=wave.cpp | |||
LIB_AUDIO=portaudio | |||
USE_AUDIO=USE_PORTAUDIO | |||
endif | |||
speak_SOURCES = speak.cpp compiledict.cpp dictionary.cpp intonation.cpp \ | |||
readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \ | |||
synthdata.cpp synthesize.cpp translate.cpp tr_english.cpp \ | |||
@@ -38,23 +24,22 @@ libespeak_SOURCES = speak_lib.cpp compiledict.cpp dictionary.cpp intonation.cpp | |||
readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \ | |||
synthdata.cpp synthesize.cpp translate.cpp tr_english.cpp \ | |||
tr_languages.cpp voices.cpp wavegen.cpp phonemelist.cpp \ | |||
espeak_command.cpp event.cpp fifo.cpp $(WAVE) debug.cpp | |||
espeak_command.cpp event.cpp fifo.cpp wave.cpp debug.cpp | |||
SRCS1=$(speak_SOURCES) | |||
OBJS1=$(patsubst %.cpp,%.o,$(SRCS1)) | |||
LIBS1=-lstdc++ -l$(LIB_AUDIO) -lpthread | |||
LIBS1=-lstdc++ -lportaudio -lpthread | |||
SRCS2=$(libespeak_SOURCES) | |||
OBJS2=$(patsubst %.cpp,x_%.o,$(SRCS2)) | |||
LIBS2=-lstdc++ -l$(LIB_AUDIO) -lpthread | |||
LIBS2=-lstdc++ -lportaudio -lpthread | |||
SRCS3 = espeak.cpp | |||
OBJS3=$(patsubst %.cpp,%.o,$(SRCS3)) | |||
LIBS3=-lstdc++ ./libespeak.so | |||
CXXFLAGS=-O2 -D$(USE_AUDIO) | |||
#CXXFLAGS=-D$(USE_AUDIO) -ggdb -DDEBUG_ENABLED | |||
CXXFLAGS=-O2 | |||
all: $(BIN_NAME) $(LIB_NAME) $(STATIC_LIB_NAME) $(BIN2_NAME) |
@@ -0,0 +1,124 @@ | |||
BINDIR=/usr/bin | |||
INCDIR=/usr/include/espeak | |||
LIBDIR=/usr/lib | |||
DATADIR=/usr/share/espeak-data | |||
RELEASE = 1.30 | |||
BIN2_NAME = espeak | |||
LIB_NAME = libespeak.so | |||
STATIC_LIB_NAME = libespeak.a | |||
LIB_VERSION = 1 | |||
LIBTAG = $(LIB_VERSION).$(RELEASE) | |||
INSTALL = /usr/bin/install | |||
LN_SF = /bin/ln -sf | |||
MKDIR = mkdir -p | |||
#AUDIO = portaudio | |||
AUDIO = pulseaudio | |||
BIN_NAME = speak | |||
ifeq ($(AUDIO),pulseaudio) | |||
WAVE=wave_pulse.cpp | |||
LIB_AUDIO=pulse | |||
USE_AUDIO=USE_PULSEAUDIO | |||
# the speak executable is not yet compliant with PulseAudio, | |||
# speak_SOURCES defined for avoiding compilation errors. | |||
speak_SOURCES = speak.cpp compiledict.cpp dictionary.cpp intonation.cpp \ | |||
readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \ | |||
synthdata.cpp synthesize.cpp translate.cpp tr_english.cpp \ | |||
tr_languages.cpp voices.cpp wavegen.cpp phonemelist.cpp \ | |||
espeak_command.cpp event.cpp fifo.cpp $(WAVE) debug.cpp | |||
else | |||
#portaudio | |||
WAVE=wave.cpp | |||
LIB_AUDIO=portaudio | |||
USE_AUDIO=USE_PORTAUDIO | |||
speak_SOURCES = speak.cpp compiledict.cpp dictionary.cpp intonation.cpp \ | |||
readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \ | |||
synthdata.cpp synthesize.cpp translate.cpp tr_english.cpp \ | |||
tr_languages.cpp voices.cpp wavegen.cpp phonemelist.cpp | |||
endif | |||
speak_SOURCES = speak.cpp compiledict.cpp dictionary.cpp intonation.cpp \ | |||
readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \ | |||
synthdata.cpp synthesize.cpp translate.cpp tr_english.cpp \ | |||
tr_languages.cpp voices.cpp wavegen.cpp phonemelist.cpp | |||
libespeak_SOURCES = speak_lib.cpp compiledict.cpp dictionary.cpp intonation.cpp \ | |||
readclause.cpp setlengths.cpp numbers.cpp synth_mbrola.cpp \ | |||
synthdata.cpp synthesize.cpp translate.cpp tr_english.cpp \ | |||
tr_languages.cpp voices.cpp wavegen.cpp phonemelist.cpp \ | |||
espeak_command.cpp event.cpp fifo.cpp $(WAVE) debug.cpp | |||
SRCS1=$(speak_SOURCES) | |||
OBJS1=$(patsubst %.cpp,%.o,$(SRCS1)) | |||
LIBS1=-lstdc++ -l$(LIB_AUDIO) -lpthread | |||
SRCS2=$(libespeak_SOURCES) | |||
OBJS2=$(patsubst %.cpp,x_%.o,$(SRCS2)) | |||
LIBS2=-lstdc++ -l$(LIB_AUDIO) -lpthread | |||
SRCS3 = espeak.cpp | |||
OBJS3=$(patsubst %.cpp,%.o,$(SRCS3)) | |||
LIBS3=-lstdc++ ./libespeak.so | |||
#CXXFLAGS=-O2 -D$(USE_AUDIO) | |||
CXXFLAGS=-D$(USE_AUDIO) -ggdb -DDEBUG_ENABLED | |||
all: $(BIN_NAME) $(LIB_NAME) $(STATIC_LIB_NAME) $(BIN2_NAME) | |||
mv $(LIB_NAME) $(LIB_NAME).$(LIBTAG) | |||
.cpp.o: | |||
$(CXX) $(CXXFLAGS) -D PATH_ESPEAK_DATA=\"$(DATADIR)\" -Wall -pedantic -I. -c -fno-exceptions $< | |||
$(BIN_NAME): $(OBJS1) | |||
$(CXX) -o $@ $(OBJS1) $(LIBS1) | |||
$(BIN2_NAME): $(OBJS3) $(LIB_NAME) | |||
$(CXX) -o $@ $(OBJS3) $(LIBS3) | |||
x_%.o: %.cpp | |||
$(CXX) $(CXXFLAGS) -Wall -fpic -fvisibility=hidden -pedantic \ | |||
-I. -D LIBRARY -c -fno-exceptions $< -o x_$*.o | |||
$(LIB_NAME): $(OBJS2) | |||
$(CXX) -shared -Wl,-soname,$(LIB_NAME).$(LIB_VERSION) -o $@ $(OBJS2) $(LIBS2) | |||
$(STATIC_LIB_NAME): $(OBJS2) | |||
$(AR) cqs $(STATIC_LIB_NAME) $(OBJS2) | |||
clean: | |||
rm -f *.o *.a *~ | |||
distclean: clean | |||
rm -f $(BIN_NAME) | |||
rm -f $(BIN2_NAME) | |||
rm -f $(LIB_NAME)* | |||
install: all | |||
# Create directories | |||
rm -rf $(DESTDIR)$(DATADIR) | |||
$(MKDIR) $(DESTDIR)$(BINDIR) | |||
$(MKDIR) $(DESTDIR)$(LIBDIR) | |||
$(MKDIR) $(DESTDIR)$(INCDIR) | |||
$(MKDIR) $(DESTDIR)$(DATADIR) | |||
# Install espeak executable | |||
$(INSTALL) -m 755 $(BIN2_NAME) $(DESTDIR)$(BINDIR) | |||
# Install shared library | |||
$(INSTALL) -m 755 $(LIB_NAME).$(LIBTAG) $(DESTDIR)$(LIBDIR) | |||
# Install static library | |||
$(INSTALL) -m 755 $(STATIC_LIB_NAME) $(DESTDIR)$(LIBDIR) | |||
$(LN_SF) $(LIB_NAME).$(LIBTAG) $(DESTDIR)$(LIBDIR)/$(LIB_NAME).$(LIB_VERSION) | |||
$(LN_SF) $(LIB_NAME).$(LIB_VERSION) $(DESTDIR)$(LIBDIR)/$(LIB_NAME) | |||
# Install development headers | |||
$(INSTALL) -pm 644 speak_lib.h $(DESTDIR)$(INCDIR) | |||
# Install data files | |||
cp -prf ../espeak-data/* $(DESTDIR)$(DATADIR) | |||
@@ -886,7 +886,7 @@ static int GetVowelStress(Translator *tr, unsigned char *phonemes, unsigned char | |||
static char stress_phonemes[] = {phonSTRESS_U, phonSTRESS_D, phonSTRESS_2, phonSTRESS_3, | |||
phonSTRESS_P, phonSTRESS_TONIC, phonSTRESS_TONIC}; | |||
phonSTRESS_P, phonSTRESS_P2, phonSTRESS_TONIC}; | |||
void ChangeWordStress(Translator *tr, char *word, int new_stress) |
@@ -39,6 +39,7 @@ typedef struct { | |||
char stress; | |||
char env; | |||
char flags; //bit 0=pitch rising, bit1=emnphasized | |||
char nextph_type; | |||
short pitch1; | |||
short pitch2; | |||
} SYLLABLE; | |||
@@ -901,6 +902,28 @@ void Translator::CalcPitches(int clause_type) | |||
SYLLABLE syllable_tab2[N_PHONEME_LIST]; | |||
syllable_tab = syllable_tab2; // don't use permanent storage. it's only needed during the call of CalcPitches() | |||
n_st = 0; | |||
n_primary = 0; | |||
for(ix=0; ix<(n_phoneme_list-1); ix++) | |||
{ | |||
p = &phoneme_list[ix]; | |||
if(p->synthflags & SFLAG_SYLLABLE) | |||
{ | |||
syllable_tab[n_st].flags = 0; | |||
syllable_tab[n_st].env = PITCHfall; | |||
syllable_tab[n_st].nextph_type = phoneme_list[ix+1].type; | |||
syllable_tab[n_st++].stress = p->tone; // stress level | |||
if(p->tone >= 4) | |||
n_primary++; | |||
} | |||
} | |||
syllable_tab[n_st].stress = 0; // extra 0 entry at the end | |||
if(n_st == 0) | |||
return; // nothing to do | |||
if(langopts.tone_language == 1) | |||
{ | |||
@@ -921,26 +944,6 @@ void Translator::CalcPitches(int clause_type) | |||
else | |||
no_tonic = 0; | |||
n_st = 0; | |||
n_primary = 0; | |||
for(ix=0; ix<n_phoneme_list; ix++) | |||
{ | |||
p = &phoneme_list[ix]; | |||
if(p->synthflags & SFLAG_SYLLABLE) | |||
{ | |||
syllable_tab[n_st].flags = 0; | |||
syllable_tab[n_st].env = PITCHfall; | |||
syllable_tab[n_st++].stress = p->tone; // stress level | |||
if(p->tone >= 4) | |||
n_primary++; | |||
} | |||
} | |||
syllable_tab[n_st].stress = 0; // extra 0 entry at the end | |||
if(n_st == 0) | |||
return; // nothing to do | |||
st_start = 0; | |||
count_primary=0; | |||
for(st_ix=0; st_ix<n_st; st_ix++) | |||
@@ -952,7 +955,7 @@ void Translator::CalcPitches(int clause_type) | |||
if(syl->stress == 6) | |||
{ | |||
// reduce the stress of the previous stressed syllable | |||
// reduce the stress of the previous stressed syllable (review only the previous few syllables) | |||
for(ix=st_ix-1; ix>=st_start && ix>=(st_ix-3); ix--) | |||
{ | |||
if(syllable_tab[ix].stress == 6) |
@@ -65,7 +65,7 @@ | |||
#define phonSTRESS_2 4 | |||
#define phonSTRESS_3 5 | |||
#define phonSTRESS_P 6 | |||
#define phonSTRESS_TONIC 7 | |||
#define phonSTRESS_P2 7 // priority stress within a word | |||
#define phonSTRESS_PREV 8 | |||
#define phonPAUSE 9 | |||
#define phonPAUSE_SHORT 10 | |||
@@ -84,6 +84,7 @@ | |||
#define phonPAUSE_VSHORT 23 | |||
#define phonPAUSE_LONG 24 | |||
#define phonT_REDUCED 25 | |||
#define phonSTRESS_TONIC 26 | |||
extern const unsigned char pause_phonemes[8]; // 0, vshort, short, pause, long, glottalstop | |||
// place of articulation |
@@ -35,7 +35,7 @@ | |||
#include "translate.h" | |||
#include "wave.h" | |||
const char *version_string = "1.30.14 15.Jan.08"; | |||
const char *version_string = "1.30.15 17.Jan.08"; | |||
const int version_phdata = 0x013010; | |||
int option_device_number = -1; |
@@ -487,7 +487,7 @@ SetLengthMods(tr,3); // all equal | |||
case L('n','o'): // Norwegian | |||
{ | |||
static const unsigned char stress_amps_no[] = {16,16, 20,20, 20,24, 24,22 }; | |||
static const short stress_lengths_no[8] = {160,140, 200,190, 0,0, 220,210}; | |||
static const short stress_lengths_no[8] = {160,140, 200,200, 0,0, 220,210}; | |||
tr = new Translator(); | |||
SetupTranslator(tr,stress_lengths_no,stress_amps_no); | |||
@@ -44,7 +44,7 @@ static char translator2_language[20] = {0}; | |||
FILE *f_trans = NULL; // phoneme output text | |||
int option_tone1 = 0; | |||
int option_tone2 = 0; | |||
int option_tone_flags = 0; // bit 8=emphasize allcaps, bit 9=emphasize penultimate stress | |||
int option_tone_flags = 0x100; // bit 8=emphasize allcaps, bit 9=emphasize penultimate stress | |||
int option_phonemes = 0; | |||
int option_phoneme_events = 0; | |||
int option_quiet = 0; |
@@ -50,17 +50,17 @@ enum {ONE_BILLION=1000000000}; | |||
#ifdef USE_PULSEAUDIO | |||
static t_wave_callback* my_callback_is_output_enabled=NULL; | |||
#define SAMPLE_RATE 22050 | |||
#define FRAMES_PER_BUFFER 512 | |||
#define BUFFER_LENGTH (SAMPLE_RATE*2*sizeof(uint16_t)) | |||
#define THRESHOLD (BUFFER_LENGTH/5) | |||
#define ESPEAK_FORMAT PA_SAMPLE_S16LE | |||
#define ESPEAK_CHANNEL 1 | |||
#define MAXLENGTH 132300 | |||
#define TLENGTH 4410 | |||
#define PREBUF 2200 | |||
#define MINREQ 880 | |||
#define FRAGSIZE 0 | |||
static pa_context *context = NULL; | |||
static pa_stream *stream = NULL; | |||
@@ -514,15 +514,11 @@ static int pulse_open() | |||
pa_buffer_attr a_attr; | |||
// TBD | |||
a_attr.maxlength=132300; | |||
a_attr.tlength=8820; //88200 | |||
// a_attr.tlength=10000; //88200 | |||
a_attr.prebuf=2200; | |||
a_attr.minreq=880; | |||
a_attr.fragsize=882; | |||
a_attr.maxlength = MAXLENGTH; | |||
a_attr.tlength = TLENGTH; | |||
a_attr.prebuf = PREBUF; | |||
a_attr.minreq = MINREQ; | |||
a_attr.fragsize = 0; | |||
SHOW_TIME("pa_connect_playback"); | |||
if (pa_stream_connect_playback(stream, NULL, &a_attr, (pa_stream_flags_t)(PA_STREAM_INTERPOLATE_TIMING|PA_STREAM_AUTO_TIMING_UPDATE), &volume, NULL) < 0) { | |||
@@ -634,21 +630,6 @@ void wave_set_callback_is_output_enabled(t_wave_callback* cb) | |||
//> | |||
//<wave_init | |||
void display_buffer() | |||
{ | |||
const pa_buffer_attr *a_attr = pa_stream_get_buffer_attr (stream); | |||
if (a_attr) | |||
{ | |||
SHOW("attr> maxlength=%ld\n",a_attr->maxlength); | |||
SHOW("attr> tlength=%ld\n",a_attr->tlength); | |||
SHOW("attr> prebuf=%ld\n",a_attr->prebuf); | |||
SHOW("attr> minreq=%ld\n",a_attr->minreq); | |||
SHOW("attr> fragsize=%ld\n",a_attr->fragsize); | |||
} | |||
} | |||
void wave_init() | |||
{ | |||
ENTER("wave_init"); | |||
@@ -656,15 +637,12 @@ void wave_init() | |||
stream = NULL; | |||
pulse_open(); | |||
display_buffer(); | |||
} | |||
//> | |||
//<wave_open | |||
void* wave_open(char* the_api) | |||
void* wave_open(const char* the_api) | |||
{ | |||
ENTER("wave_open"); | |||
return((void*)1); | |||
@@ -698,9 +676,16 @@ size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSiz | |||
SHOW("wave_write > aTotalFreeMem(%d) >= bytes_to_write(%d)\n", aTotalFreeMem, bytes_to_write); | |||
break; | |||
} | |||
// TBD: check if really helpful | |||
if (aTotalFreeMem >= MAXLENGTH*2) | |||
{ | |||
aTotalFreeMem = MAXLENGTH*2; | |||
} | |||
SHOW("wave_write > wait: aTotalFreeMem(%d) < bytes_to_write(%d)\n", aTotalFreeMem, bytes_to_write); | |||
// 500: threshold for avoiding to many calls to pulse_write | |||
// 500: threshold for avoiding too many calls to pulse_write | |||
if (aTotalFreeMem>500) | |||
{ | |||
pulse_write(aBuffer, aTotalFreeMem); | |||
@@ -821,7 +806,7 @@ void *wave_test_get_write_buffer() | |||
void wave_init() {} | |||
void* wave_open(char* the_api) {return (void *)1;} | |||
void* wave_open(const char* the_api) {return (void *)1;} | |||
size_t wave_write(void* theHandler, char* theMono16BitsWaveBuffer, size_t theSize) {return theSize;} | |||
int wave_close(void* theHandler) {return 0;} | |||
int wave_is_busy(void* theHandler) {return 0;} |