mirror of
https://github.com/rhasspy/espeak-ng.git
synced 2026-11-15 01:54:46 +00:00
[1.30.15] lang=es,pt: Fix bug where accented vowels cause intonation to go low pitch for the rest of the clause.
git-svn-id: https://espeak.svn.sourceforge.net/svnroot/espeak/trunk@127 d46cf337-b52f-0410-862d-fd96e6ae7743
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
+5
-5
@@ -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
|
||||
|
||||
+13
-5
@@ -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~
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
+16
-10
@@ -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
|
||||
|
||||
|
||||
|
||||
+4
-32
@@ -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
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
+4
-4
@@ -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 æ
|
||||
|
||||
+46
-46
@@ -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
|
||||
|
||||
|
||||
+15
-1
@@ -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 _
|
||||
|
||||
+5
-20
@@ -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)
|
||||
|
||||
+1
-1
@@ -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)
|
||||
|
||||
+24
-21
@@ -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)
|
||||
|
||||
+2
-1
@@ -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
|
||||
|
||||
+1
-1
@@ -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);
|
||||
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+20
-35
@@ -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;}
|
||||
|
||||
Reference in New Issue
Block a user